远程连接Ubuntu_Mysql
Navicat远程访问Ubuntu中MySQL数据库
一.配置Ubuntu防火墙
https://blog.csdn.net/xihalovejay/article/details/79963670
配置ufw或iptables,开放端口或关闭防火墙。
sudo ufw allow 端口号/tcp(允许连接)
默认端口号:
ssh(22)
MySQL(3306)
sudo ufw enable(启用UFW)
sudo ufw disable(关闭防火墙)
sudo ufw status verbose(检查UFW状态和规则)
二.赋予MySQL用户远程连接权限
https://www.cnblogs.com/weifeng1463/p/7941625.html(参考一)
https://www.cnblogs.com/gpdm/p/6492449.html(参考二)
grant all privileges on *.* to root@'%' identified by "password";('%'代表all host)
flush privileges;(刷新)
1.参考一
1、登陆mysql数据库
开启MySQL远程访问权限 允许远程连接
mysql -u root -p
查看user表
mysql> use mysql;
Database changed
mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host | user | password |
+--------------+------+-------------------------------------------+
| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+--------------+------+-------------------------------------------+
2 rows in set (0.00 sec)
可以看到在user表中已创建的root用户。host字段表示登录的主机,其值可以用IP,也可用主机名,
(1)有时想用本地IP登录,那么可以将以上的Host值改为自己的Ip即可。
2、实现远程连接(授权法)
将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器,建议在开发时设为%。
update user set host = ’%’ where user = ’root’;
将权限改为ALL PRIVILEGES
mysql> use mysql;
Database changed
mysql> grant all privileges on . to root@'%' identified by "password";
Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host | user | password |
+--------------+------+-------------------------------------------+
| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+--------------+------+-------------------------------------------+
3 rows in set (0.00 sec)
这样机器就可以以用户名root密码root远程访问该机器上的MySql.
3、实现远程连接(改表法)
use mysql;
update user set host = '%' where user = 'root';
2.参考二
1、创建用户并授权
1、登录mysql
mysql -u root -p
2、创建数据库
create database dbdata;//以创建dbdata为例
3、创建用户
创建user01,只能本地访问
create user user01@'localhost' identified by 'password';
创建user02,可以远程访问
create user user02@'%' identified by 'password'
4、修改用户密码
以user01为例:
set password for 'user01'@'localhost'=password('anotherpassword')
5、授权
授予user01管理dbdata的全部权限
grant all privileges on dbdata.* to user01;
授予user02查看权限,并修改密码
grant select on *.* to 'user02'@'%' identified by 'anotherpassword';
2、设置mysql允许远程连接(ubuntu系统)
1、 sudo vi /etc/mysql/my.cnf
2、注释掉如下两行:
bind-address=127.0.0.1
skip-network(mysql5.6版本里没有这行)
3、sudo service mysql restart
结合一中的授权,被授权用户可以远程访问
三.Navicat配置
1.SSH中
主机:MySQL所在主机IP(可以使用ifconfig 命令进行查看)
端口:SSH端口默认22
用户名和密码:MySQL所在主机的用户(一般root用户无法直接登陆,参考https://blog.csdn.net/qq_35445306/article/details/78771398解决)
解决方法:
问题现象:
使用Xshell访问ubuntu服务器,无法连接
xshell测试非root用户,可以正常连接,但是root用户仍旧无法访问
解决方法:
修改 /etc/ssh/sshd_config 文件把PermitRootLogin Prohibit-password 添加#注释掉
新添加:PermitRootLogin yes
重启ssh服务 /etc/init.d/ssh restart
重新使用root连接,ok!
2.常规中
连接名:随便
主机:localhost(若写localhost报错则写为,127.0.0.1,因为ipv6高于ipv4会出错,参考(https://blog.csdn.net/weixin_39676287/article/details/78277326)
端口:MySQL默认端口为3306
用户名和密码:MySQL用户

浙公网安备 33010602011771号