个人配置
1.操作系统:ubuntu0.18.04.1 (Ubuntu) + Windows10
2.MySQL版本:5.7.32
步骤概览
第1步:查看3306端口是否开放
第2步:修改访问权限
第3步:修改端口号
第4步:开放root账户的访问权限
第5步:Windows系统下使用在命令行远程连接Ubuntu的MySQL数据库
第1步:查看3306端口是否开放
按快捷键ctrl+alt+T,打开终端,输入命令:
netstat -an|grep 3306
**注意事项:**如果没有安装netstat工具,先使用命令sudo apt-get install netstat工具进行安装。
如果出现下图所示的情况,即端口号3306前还有一ip地址,这表示当前系统MySQL数据库仅允许ip地址为127.0.0.1的主机(这里是本机)访问,所以需要进行修改。
第2步:修改访问权限
在mysql的安装目录mysql.conf.d目录下找到mysqld.cnf配置文件,在文件管理中打开这个配置文件或者直接使用如下命令打开:
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
打开文件之后,大概在第43行找到如下所示的字段:
注意红框部分,把它注释掉(在最前面添加#),如下图所示:
说明:bind-address是指远程可以访问本机MySQL数据库的主机的IP地址,注释掉的意思就是说任何主机都可以访问,所以这样会存在风险;另一种靠谱的做法是仅添加可访问的主机的IP地址,例如:
bind-address=127.0.0.1 139.196.197.138
这表示允许多个IP可访问mysql服务器,IP之间用空格隔开。
修改完之后不要退出,先保存。
第3步:修改端口号
这一步还是在第2步的配置文件上继续进行操作,即/etc/mysql/mysql.conf.d/mysqld.cnf这个文件。在文件中大概第31行开始找到如下字段:
检查有无端口配置,即图中红色框部分,可能版本的原因,我的自带这一段配置,对于一些较老的版本,需要添加这一配置。
第4步:开放root账户的访问权限
以上操作仅仅是取消了本地访问的限制,但是还没有对账户权限进行设置。
先重启MySQL服务:
service mysql stop
service mysql start
进入MySQL控制台:
mysql -h 127.0.0.1 -u root -p
效果如下
此时就已经进入到数据库中,输入:
use mysql;
输入之后的效果:
输入如下命令查看该数据库中的所有表:
show tables;
效果如下:
我们要修改上图中的最后一张表“user”,输入如下命令查看这张表的字段:
字段太多就不截全图了。我么需要关注“Host”和“User”两个字段。
通过命令select host, user from user; 查看user表的host和user数据, 会发现root用户允许的host是localhost,如下图所示:
修改数据:
update user set host='%' where user='root';
这表示把user为root的host改为%,表示允许root用户在所有IP上登录。这里我也不知道为什么我的root用户有两个host,所以修改前后没有变化,我就直接使用如下命令开放root账户的所有权限:
grant all privileges on *.* to 'root'@'%' identified by '你的root账户密码';
使各种权限设置立即生效:
flush privileges;
再次输入命令:
netstat -an|grep 3306
看到如下结果就成功了
重启mysql:
/etc/init.d/mysql restart
完成!
第5步:Windows系统下使用在命令行远程连接Ubuntu的MySQL数据库
先声明Windows系统和Ubuntu系统位于两台不同的主机。
在终端输入:
ifconfig
查看Ubuntu系统的IP地址:
这里我连的是wifi,所以记住红色框部分的地址:10.161.182.141
在Windows系统下打开命令提示符,输入:
mysql -h 10.161.182.141 -u root -p
其中10.161.182.141就是Ubuntu系统的IP地址,效果如下:
大功告成!