mysql开启远程访问

mysql安装踩坑指南

我是在我的ubuntu server虚拟机中安装的mysql数据库,好久之前安装的,好像直接可以用命令安装,所以就不演示了。


我的电脑之前一直是kali linux系统,用了一年多的操作系统,于2019年10月8日早上崩掉了(纪念一下陪我一年多的系统),修了一会儿没修好,就放弃了,不想折腾了,因此呢,找了一个不用折腾的系统(deepin),国产的,开机即用,真心方便呀。


mysql的坑

我的mysql在虚拟机里,之前的操作系统一直用着没问题,今天用我的主机连接虚拟机中的数据库,一直提示权限拒绝,就是下面这个样子的。


mysqlconne_1570600418_1418573420.png

开始,我还以为是我的虚拟机防火墙的问题,弄了半天防火墙还是不行。后来看了一下我的数据库的user表,终于意识到了问题所在,是因为我的user表中数据库的root用户只允许本机和我之前系统的那个IP地址访问。

usertable_1570610880_2127488744.png

后来我改了一下这个IP地址就好了,之前的IP是 192.168.205.1

update user set host='172.16.223.1' where host='192.168.205.1'

执行如上命令之后,我还是不能访问,搞了一会儿才知道是没有刷新缓存,执行下面的这条命令刷新一下就行了。

flush privileges;

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,也可用主机名,
有时想用本地IP登录,那么可以将以上的Host值改为自己的IP即可。

实现远程连接(授权法)

将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.

实现远程连接(改表法)

use mysql;

update user set host = '%' where user = 'root';

这样在远端就可以通过root用户访问Mysql.

你可能感兴趣的:(mysql开启远程访问)