远程连接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用户

在这里插入图片描述

posted @ 2024-06-25 18:14  3088577529  阅读(38)  评论(0)    收藏  举报