使用 Navicat 连接远程 MySQL 数据库
登陆数据库
mysql -h {端口号} -u root -p {密码}
创建用户用来远程连接
-- 第一个 mysql_lbh 表示用户名,% 表示所有的电脑都可以连接,也可以设置某个 ip 地址运行连接,第二个 mysql_lbh 表示密码
GRANT ALL PRIVILEGES ON *.* TO 'mysql_lbh'@'%' IDENTIFIED BY 'mysql_lbh' WITH GRANT OPTION;
-- 命令立即生效
flush privileges;
查询数据库的用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
-- 退出 MySQL
exit;

设置 Navicat 连接

点击测试连接看到如下内容表示成功:

注意问题
1)在输入 mysql -u root -p
时,显示 cannot connect to mysql server...
这种错误,后来发现是没有打开 MySQL。所以在以上操作之前记得看看 MySQL 有没有打开:
service mysql status # 查看有没有打开服务
service mysql start # 打开服务
service mysql stop # 停止服务
service mysql restart # 重启服务
2)在进行上述连接后,用 Navicat 远程连接 MySQL,发现还是不可以,是因为防火墙把 3306 端口屏蔽了。所以要设置防火墙:
# 设置防火墙允许 3306 端口
vi /etc/sysconfig/iptables
# 添加
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
# 注意添加在 -A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited 之前,否则可能导致规则不生效
# 重启防火墙
service iptables restart
解决 Mysql 无法远程连接的问题
-
MySQL 的端口是否正确 通过
netstat -ntlp
查看端口占用情况,一般情况下端口是 3306。 -
检查用户权限是否正确 MySQL 库的 user 表里有两条记录:host 分别为 localhost 和 % (为了安全,% 可以换成你需要外部连接的 IP)。
-
检查服务器厂商控制台是否开放防火墙 3306 端口
转载自:https://juejin.cn/post/7135415606576316447