开启mysql远程访问权限

mysql-server 出于安全方面考虑只允许本机(localhost, 127.0.0.1)来连接访问, 这对于 web-server 与 mysql-server 都在同一台服务器上的网站架构来说是没有问题的, 但随着网站流量的增加,后期服务器架构可能会将 web-server 与 mysql-server 分别放在独立的服务器上, 以便得到更大性能的提升, 这样其他节点的web-server就不能链接到mysql,或者是我们用一些mysql可视化管理工具远程连接也连接不了的,此时 mysql 就要修改成允许进行远程连接。

登录mysql

1
2
3
mysql -u root -p

# 输入密码

修改mysql用户配置

1
2
3
4
# 切换到mysql DB
mysql> use mysql
# 查看现有用户,密码及允许连接的主机
mysql> SELECT User, Password, Host FROM user;

从上图我们可以看到可链接用户列表、密码及可链接host

下面我们另外添加一个新的 root 用户, 密码为空, 只允许 192.168.0.68 连接,命令如下:

1
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.68' IDENTIFIED BY  ''  WITH GRANT OPTION;  

然后我们在看一下用户列表,可以看到我们添加的信息

当然 @’192.168.0.68’可以替换为@‘%’就可任意ip访问

1
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY  ''  WITH GRANT OPTION;

实际应用当中我们一定要设置密码哈!!!

添加完用户后要推送设置到内存

1
2
# 这一步很重要哦
mysql> flush privileges;

2022/08/11 更新

mysql 8.0.3版本:

1
2
# 查看表的权限
mysql> select host,user,plugin,authentication_string from mysql.user;

1
2
# 更新权限:
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '****'; # ****是数据库密码