MySQL是一款使用 SQL 语言进行增删改查操作的关系型数据库,MySQL 数据库支持跨平台、性能卓越,可以和 PHP、Java 等 Web 开发语言完美配合而且体积小、速度快,最重要的是MySQL开源免费,可以大大降低运营成本。本次在衡阳的智能制造服务就是采用的MySQL数据库,并搭配上了自主研发的“雾小脑”。“雾小脑”搭载的是Windows Server系统并安装了Mysql数据库
今天在调试程序的时候通过本地电脑链接“雾小脑”上的数据库时遇到提示:Host ‘XXX’ is not allowed to connect to this MySQL server,当然服务器上是可以直接通过localhost访问到数据库的。这里我们可以使用Navicat来管理MySQL数据库,它可以以图形用户界面连接数据库帮助用户方便、简单、快速的创建、管理和访问数据库资源。
一般出现这种现象有两个原因,一个是当前用户直接被mysql服务器拒绝访问,另外一个则是3306端口被防火墙禁掉导致无法连接到该端口。
在系统中找到“控制面板→系统和安全→Windows防火墙”,点击左侧菜单中的“高级设置”进入【高级安全 Windows防火墙】界面。鼠标右键左侧的“入站规则”接着点击右侧的“新建规则”,在【新建入站规则向导】界面中的在“规则类型”选择“端口”,点击下一步选择“TCP”,点选“特定本地端口”后填入端口号3306。点击“下一步”继续点选“允许连接”后直接“下一步”,根据用户的实际情况勾选域、专用或共用等选项。点击“下一步”继续并为该规则命名,设置完成之后其他计算机就可以访问该系统的3306端口了。
在安装mysql的机器上运行命令:mysql -u root -p,输入密码之后就可以登录MySQL服务器。然后在mysql中执行命令:use mysql进入mysql数据库,接着继续执行命令: select host from user where user = ‘root’;可以查看当前root用户允许被访问的。如果显示host是localhost就说明该服务只允许被本地访问,那么这时候我们就需要来修改允许访问的权限。该指令的意思是将数据库的所有权限授权给username这个用户,允许username在 xxx.xxx.xx.x 这个IP通过password密码远程登陆MySQL服务器。
all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,权限间用“,”半角逗号分隔。*.*指任意数据库中的任意表,也可以指定数据库和表授权:“数据库名.表名”。username则是要授权的用户,该用户可以是已存在的用户,也可以是不存在的用户(不存在会自动新建,password 为username用户的密码)。xxx.xxx.xx.x 是指定允许远程连接的主机IP地址,如果希望所有主机访问可以将其设置为“%”。
最后记得执行命令:flush privileges;来刷新权限使其生效,或者通过命令 service mysql restart 重启mysql数据库也行。以上内容是小编给大家分享的【MySQL实战003:Windows允许mysql远程连接】。希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。为了方便学习,下面附上本文用到的源码:
>mysql -u root -p
>Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 6041
Server version: 8.0.19 MySQL Community Server - GPL
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> grant all PRIVILEGES on *.* to 'username'@'xxx.xxx.xx.x' identified by 'password' WITH GRANT OPTION;
mysql>flush privileges;