共计 1431 个字符,预计需要花费 4 分钟才能阅读完成。
MySQL5.7 设置远程访问不是和网上说的一样建个用户赋个权限就可以访问的。比如下边这个就是建用户赋权限,可能在之前的版本可以,但是我在我的 mysql 上一直不行。为此烦了好久!!!项目都耽误了!!
一、原来设置远程访问的方式
MySQL 默认是不可以通过远程机器访问的, 通过下面的配置可以开启远程访问
在 MySQL Server 端:
执行 mysql 命令进入 mysql 命令模式,
- mysql> use mysql;
- mysql> GRANT ALL ON *.* TO user@‘%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
# 这句话的意思,允许任何 IP 地址(上面的 % 就是这个意思)的电脑 用 admin 帐户 和密码(admin)来访问这个 MySQL Server
# 必须加类似这样的帐户,才可以远程登陆。root 帐户是无法远程登陆的,只可以本地登陆
远程访问:
- mysql -h172.21.5.29 -uuser -p123456 即可了
- //172.21.5.29 就是 MySQL Server 的 IP 地址,user 就是刚才在 172.21.5.29 上设置的远程访问帐户
另外你也可以在一个机器上模拟远程访问,就是多开几个终端,方便测试是否可以远程访问。
- mysql -hlocalhost -uadmin -padmin
结果是失败的。
原来 上面的 % 竟然不包括 localhost
所以你还必须加上这样的 命令:
mysql>GRANT ALL ON *.* TO admin@’localhost’ IDENTIFIED BY ‘admin’ WITH GRANT OPTION;
二、mysql5.7 中设置远程访问
我在按照上边的方法设置后,发现用 mysql -h 并不能远程访问,修改了 /etc/my.cnf 配置文件把
#skip-networking 注释掉
加上 bind-address=0.0.0.0
然而并没有卵用!
看得我都快背下来了!
后来我直接去看他的配置文件:在 /etc/mysql 文件夹下
点开图中的 my.cnf: 有下面一些话:
#
# * IMPORTANT: Additional settings that can override those from this file!# 其他地方的配置可以覆盖此文件的配置
# The files must end with ‘.cnf’, otherwise they’ll be ignored.
#!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
文件最后的两个路径我很好奇,就去看了下:conf.d/:
里边一个配置文件,打开发现,就一个[mysql],然后啥都没有。
再看另一个:
也有一个配置文件,打开发现有惊喜,就在这里边有一句话:
瞬间有种见到天日的感觉!!!看它的注释就明白,只能本地连接,问题出在这!!
把 bind-address 注释掉:#bind-address=…
重启 mysql 服务,远程链接:
- mysql -h172.17.0.1 -uuser -p
// 我的用户名是:user
终于进去了,哈哈!!
为了这个折腾了两天!!!我是服气 mysql 的!!
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/143203.htm