1.原因分析
在服务器上安装好了mysql server。启动服务之后,通过 mysql -u 用户名 -p 密码,可以正常的连接,但是在其他的机器上连接不上。
出现这种问题的原因可能有两点:
1.1 mysql安装好后,默认只对127.0.0.1的本机开放,没有对远程的主机开放。
解决办法:
(1)找到默认的mysql的配置文件,一般为 /etc/mysql/mysql.cnf 或者 /etc/mysql/mysql.conf.d/mysql.cnf
(2)找到 bind-address= 这个选项 ,修改为 bind-address = 0.0.0.0 (或者根据自己的安全需求,修改为相应的开放的ip地址)
(3)重启mysql服务器 (/etc/init.d/mysql stop /etc/init.d/mysql start)
1.2 用户的权限配置配置正确,用户没有权限在远程登录mysql服务器
解决的办法和相关分析见: https://dev.mysql.com/doc/refman/8.0/en/grant.html
案例:
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
ALTER USER 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;
SHOW GRANTS FOR 'jeffrey'@'localhost';