A 机器上的 MySQL 默认只能 A 机器上的软件访问,即 localhost,如果 B 机器上的软件想访问 A 机器上的 MySQL,需要 MySQL 对 B 机器的 IP 进行授权。
如果是 Homebrew 安装的 MySQL,修改文件
/usr/local/etc/my.cnf
中的bind-address = 0.0.0.0
即可,然后重启 MySQL,不能使用下面的方式进行修改。
方式一
进如数据库 mysql:
use mysql
任意主机以用户 root 和密码 root 连接到 MySQL 服务器
1
2
3
4
5
6
7
8# MySQL 5.7
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
# MySQL 8.0 创建用户和授权不能使用同一个 SQL 完成
CREATE user root@'%' IDENTIFIED WITH mysql_native_password BY 'root';
GRANT ALL ON *.* TO root@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;指定 IP 为(如192.168.10.186)的主机以用户 alice 和密码 Passw0rd 连接到 MySQL 服务器
1
2GRANT ALL PRIVILEGES ON *.* TO 'alice'@'192.168.10.186' IDENTIFIED BY 'Passw0rd' WITH GRANT OPTION;
FLUSH PRIVILEGES;
方式二
网上还看到说直接修改 user 表中 User root 的 Host 为 **%**,最好别这么干,不小心会哭的:
1 | USE mysql; |
按照上面的修改 host 为 % 后外网可以访问了,但是本地却访问出错:
1 | mysql -uroot -p |
可用按下面的方式补救:
1 | 1. 启动 mysqld_safe |