超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

时间:2024-03-31 12:38:24

1、简单介绍

  • 远程连接是指在同一个局域网内,别人可以在自己电脑远程登录你的Mysql数据库,不在一个局域网内是不能远程连接的,常见的是公司或是学校机房。
  • 一般连接不上是由于防火墙设置原因,检验方法就是相互ping一下,都通这防火墙没问题,如果不通的话需要将防火墙关闭;

2、Windows系统开启Mysql远程连接

  1. 登录数据库,通过命令:use mysql;进入到名为mysql这个数据库中,通过命令:select user,host from user;查看表user的相关信息,可见host列中都是localhost,所有是用户都是不允许远程连接的(名为mysql的数据库是我们安装mysql数据库时自带的一个默认数据库,库中的user表是记录用户相关信息的表);
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  2. 通过命令:grant all privileges on *.* to "允许远程的用户名"@"%" identified by "用户密码";开启这个用户远程登录权限,此处我是让我的root用户开启远程登录权限,语句是:grant all privileges on *.* to "root"@"%" identified by "123456";(我用户root密码是123456,你的需要填写自己的密码)

  3. 通过命令: flush privileges;刷新权限,再次查看user表中的信息,发现多了一行root,并且host值为%,即说明root用户允许远程登录了
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  4. 如果发现修改没有立即生效,可以先退出登录,通过命令:net stop mysql;停止mysql服务,再通过命令:net start mysql;开启mysql服务;

  5. 此时在别的电脑通过命令:mysql -h 自己电脑的ip -u root -p完后输入root用户密码,即可连接成功,此处我的是:mysql -h 192.168.XX.XX -u root -P3307 -p,如下图(-P3307这个是我mysql端口号,我修改了默认端口号所有登录的时候习惯会写明一下):
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  6. 常见失败问题还是由于双方防火墙原因,双方防火墙关闭即可;

  7. 密码输入正确但是一直提示:ERROR 1045 (28000): Access denied for user ‘root’@‘192.168.26.26’ (using password: YES)或类似的ERROR 1045 (28000): 错误,可以修改一下这个远程用户的密码即可。(一般是没问题的,但是明明输入正确却一直提示这个错误,所有还是修改一下密码即可解决)

  8. 先通过命令:use msyql进入到这个数据库中,再通过命令update user set password=password('新密码') where user='root'; 修改即可

3、Linux系统开启Mysql远程连接

  1. 前提条件:你的Linux已经安装好了Mysql数据库,我这里是在虚拟机中安装的Ubuntu系统,在Ubuntu系统中安装了Mysql。(Ubuntu系统是Linux中的一种)

  2. 登录mysql,通过命令:show variables like '%port%';查看mysql端口号(一般默认都是3306,除非我们手动更改过这个端口号);
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  3. 通过命令:netstat -an|grep 3306;查看端口3306是否打开,如下图则表示3306端口没有打开;
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  4. 通过命令:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf通过vim编辑器打开mysql配文件,将bind-address = 127.0.0.1 这一行注释掉,即在这一行最前面加一个#号即可(vim编辑器使用方法可以百度一下哈,这里简介一下此处如果操作,用vim编辑器打开mysql配置文件后是不能进行输入修改操作的,需要先按键盘上的【i】键进入编辑模式——通过上下左右方向键将光标移到需要注释的前一行——正常输入#号键即可——按键盘左上角的【Esc】退出编辑模式——按键盘的【Shift】+【:】——完后输入wq!即可保存修改并退出):

超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  1. 如果在最后退出保存时提示错误,可以将当前涌入切换到root用户,再次打开mysql配置文件修补并保存即可。
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  2. 插入一个题外话,可能大部分人安装好Ubuntu后没有对vim编辑器进行更新,此处简介一下如何安装最新的vim编辑器,先通过命令:sudo apt-get remove vim-common;卸载原因的低版本vim编辑器,在通过命令:sudo apt-get install vim;安装最新的vim编辑器;
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  3. 通过命令:netstat -an|grep 3306;再次查看端口3306是否开启,下图表示已经开启成功:
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  4. 再次登录到mysql数据库中,通过命令:grant all privileges on *.* to "用户名"@"%" identified by "次用户的密码";将此用户设置成允许远程连接,这样同一局域网内的其他人电脑就能通过这个用户登录到mysql进行相关操作,此处我的语句是:grant all privileges on *.* to "root"@"%" identified by "123456";
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  5. 设置成功后,通过命令:flush privileges;​,刷新数据权限,使刚刚修改生效(也可通过命令:sudo service mysql stop停止mysql服务,再通过命令:sudo service mysql start启动mysql服务);
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  6. 退出mysql登录,通过命令:sudo service mysql restart重启mysql数据服务:
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  7. 通过命令:ifconfig查看虚拟机中Ubuntu的ip地址:
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  8. 在本机中通过命令:ping 虚拟机ip,如果ping通则没有问题:
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  9. 接着在本机中通多命令:mysql -h IP地址 -u 允许远程连接的用户名 -p即可远程连接我们虚拟机安装的Ubuntu系统中的mysql数据库,此处我的连接语句是:mysql -h 192.168.47.128 -u root -p
    超级详细教程03:允许远程连接Mysql数据库(Linux系统+Windows系统)

  10. 当然本机连接成功后,也可通过本机汇总一些mysql可视化软件连接,如SQLyog、navicat。

  11. 如果本机连接不上自己虚拟机中mysql一般由于防火墙原因,关闭防火墙即可;

  12. 如果是别人电脑连接不上并报错,可能是双方电脑防火墙原因,互相ping一下,如果只能单向ping通,则就是防火墙没有关掉,关掉即可,双方都需要关掉;

  13. 关掉防火墙还是不行的话,可以先修改一下mysql允许远程用户的密码,完后重启即可。再次连接尝试,我就是这样成功的,别人连接时一直提示:ERROR 1045 (28000): Access denied for user 'root'@'192.168.26.26' (using password: YES)但是密码没有问题,最后是重新修改密码解决的,个人认为是你将某个用户设置为与匈奴远程连接用户后需要再次修改一下这个用户的密码。