如今我们的应用一般部署在云服务器上,为了节约成本一些公司会采用买完服务器自己安装MySQL数据库的方案。但是默认在这些云服务器上安装的MySQL数据库是无法远程访问的,一般原因有三个:
- 服务器上防火墙限制
- web控制端端口策略没有开放3306端口
- MySQL数据库没有配置远程访问权限
解决方案:
- 服务器防火墙的关闭很简单所以不做讲解。
- 第二个云服务器登陆web控制台找到出站和入站规则
添加端口策略即可
- MySQL数据库配置远程访问
用户授权法,登陆服务器上的MySQL控制台
如果登陆的用户名是root ,密码是toor 则输入以下命令
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'toor' WITH GRANT OPTION;
重启MySQL服务即可生效。
多学一招
*.* 指所有IP
如果指定只有106.10.211.68IP可远程访问则命令修改如下
GRANT ALL ON 106.10.211.68 TO 'root'@'%' IDENTIFIED BY 'toor' WITH GRANT OPTION;
如果指定172开头的IP段都可以远程访问数据库的话则修改命令如下
GRANT ALL ON 172.* TO 'root'@'%' IDENTIFIED BY 'toor' WITH GRANT OPTION;
MySQL 8.0.16 新版本方法更新
1.命令行模式下,输入账号密码登录进入控制台,选择切换到mysql数据库
use mysql;
2.取消安全模式
set sql_safe_updates=0;
3.Mysql默认不允许远程登录,所以需要开启远程访问权限,检查下配置输入如下命令:
select user,authentication_string,host,plugin from user;
4.更新为任意IP 可以登录
update user set host = '%' where user = 'root';
5.更新修改root 用户密码为 toor
alter user 'root'@'%' identified with mysql_native_password by 'toor';
6.刷新策略
FLUSH PRIVILEGES;