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.
网友评论