远程直接连接 MySQL 数据库,阿里云腾讯云允许远程连接教程

客官°小女子只卖身不卖艺 2023-09-23 16:55 239阅读 0赞

不使用SSH登录远程主机直接连接远程数据库

文章目录

  • 修改MySQL登录权限
    • 1、登录MySQL
    • 2、修改mysql库的user表
    • 3、防火墙开放3306端口
  • Navicat直接连接远程数据库报错
    • 【报错】Can’t connect to MySQL server (10060)
      • 1、网络问题
      • 2、mysql账户设置
      • 3、防火墙端口未开放
      • 4、查看云服务器商是否配置安全组规则
    • 【报错】1045:Access denied for user ‘root’@’localhost’(using password: YES)
      • 解决方法

修改MySQL登录权限

1、登录MySQL

mysql -u root -p
然后输入密码,进入mysql

2、修改mysql库的user表

修改mysql库的user表,将host项,从localhost改为%。%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip,比如可以将localhost改为192.168.1.123,这表示只允许局域网的192.168.1.123这个ip远程访问mysql。
(默认的账号的host属性都是localhost,意思是这个账号只能本地使用,如果要使用某个账号来远程登录,必须将账号的host属性值更改成%。)

  1. mysql> use mysql;
  2. mysql> update user set host = '%' where user = 'JavaWeb';
  3. mysql> select user,host from user;
  4. mysql> flush privileges;//刷新数据库

在这里插入图片描述

3、防火墙开放3306端口

查看 firewalld 状态
systemctl status firewalld
在这里插入图片描述

开启 firewalld
systemctl start firewalld
在这里插入图片描述
开放端口

  1. // --permanent 永久生效,没有此参数重启后失效
  2. firewall-cmd --zone=public --add-port=3306/tcp --permanent

重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=3306/tcp
删除
firewall-cmd --zone=public --remove-port=3306/tcp --permanent

Navicat直接连接远程数据库报错

【报错】Can’t connect to MySQL server (10060)

1、网络问题

看看能不能ping通
在这里插入图片描述

2、mysql账户设置

mysql账户是否不允许远程连接

  1. -- mysql -u root -p
  2. -- show databases;
  3. -- use mysql;
  4. -- select host,user from user

若【要是用】的用户显示host为localhost 则需要授权 root 用户的所有权限并设置远程访问

  1. -- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; //任何远程主机都可以访问数据库
  2. -- FLUSH PRIVILEGES; //需要输入次命令使修改生效
  3. -- EXIT //退出

也可以通过修改表来实现远程:(修改整个user表)

  1. -- use mysql;
  2. -- update user set host = '%' where user = 'root';
  3. -- select host, user from user;

3、防火墙端口未开放

  1. root@iZ2zee2l6djknfZ ~]# firewall-cmd --list-ports
  2. 20/tcp 21/tcp 22/tcp 80/tcp 8888/tcp 39000-40000/tcp 8001/tcp 8001/udp
  3. [root@iZ2zee2l6djknfZ ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
  4. success
  5. [root@iZ2zee2l6djknfZ ~]# firewall-cmd --reload
  6. success
  7. [root@iZ2zee2l6djknfZ ~]# firewall-cmd --list-port
  8. 20/tcp 21/tcp 22/tcp 80/tcp 8888/tcp 39000-40000/tcp 8001/tcp 8001/udp 3306/tcp

可以看出一开始mysql3306端口没有开放 ,然后此处开放,然后刷新就可以了

其他防火墙命令

  1. #centos7查看防火墙所有信息
  2. firewall-cmd --list-all
  3. #centos7查看防火墙开放的端口信息
  4. firewall-cmd --list-ports
  5. #新增一个开放端口
  6. firewall-cmd --zone=public --add-port=80/tcp --permanent
  7. #说明:
  8. #–zone #作用域
  9. #–add-port=80/tcp #添加端口,格式为:端口/通讯协议
  10. #–permanent 永久生效,没有此参数重启后失效
  11. #新增多个端口:
  12. firewall-cmd --zone=public --add-port=80-90/tcp --permanent
  13. #删除
  14. firewall-cmd --zone=public --remove-port=80/tcp --permanent #重新加载firewall-cmd --reload
  15. #查看本机已经启用的监听端口centos7以下使用netstat -ant,7使用ss
  16. ss -ant
  17. #centos7启动防火墙
  18. systemctl start firewalld.service
  19. #centos7停止防火墙/关闭防火墙
  20. systemctl stop firewalld.service
  21. #centos7重启防火墙
  22. systemctl restart firewalld.service
  23. #设置开机启用防火墙
  24. systemctl enable firewalld.service
  25. #设置开机不启动防火墙
  26. systemctl disable firewalld.service

4、查看云服务器商是否配置安全组规则

其实出现这个错误的原因也不外乎以上几个方面,相信按照上面的思路找出原因,定能将问题解决掉

【报错】1045:Access denied for user ‘root’@’localhost’(using password: YES)

错误原因:当登录MySQL数据库出现 Error 1045 错误时,表明你输入的用户名或密码错误被拒绝访问了;MySQL服务搭建后,默认root用户是不能进行远程访问连接的。

解决方法

(1)改表法
可能是你的账号不允许从远程登录,只能在localhost本地登录数据库。建议在数据库搭建时,创建一远程连接的用户或者在localhost的主机上将mysql数据库下的”user”表里的”root”用户开启远程登录(把localhost这个值替换为%)。
(2)授权法
授权格式(mysql中不区分大小写):
GRANT 权限 ON 数据库.* TO “用户名”@ “登录主机” IDENTIFIED BY “密码”;
在这里插入图片描述

参考文章:
MySQL错误:Can’t connect to MySQL server (10060) 解决方案
Navicat连接MySQL时弹出:1045:Access denied for user ‘root’@’localhost’
Centos7开放3306端口

发表评论

表情:
评论列表 (有 0 条评论,239人围观)

还没有评论,来说两句吧...

相关阅读