mysql远程连接常见问题及解决方法

前言

数据库不论是Mysql亦或是SqlServer,安装在本地,使用起来 简单方便,但是当你要卸载它们的时候,卸载不干净又无能为力的时候,是真让上火!(尤其是SqlServer,至今我怀疑我电脑还残留着部分余孽),这时候把数据库装在虚拟机或者服务器上就舒服多了。但是安装简单,远程连接却常出现以下几个问题导致无法连接或一些其他问题。下面是总结的是一些常见问题供打家参考!

1、防火墙没开启对应端口

以mysql为例,检查端口是否开启,如果没有开启的情况下,仅本允许服务器本身能够进行访问。
虚拟机的Linux操作系统(CentOS 7)的话对应指令开启端口参考以下链接:
CentOS 7防火墙相关指令

如果是阿里云服务器的话,需要在服务器控制台中自行添加防火墙规则设置运行3306端口,如下:
mysql远程连接常见问题及解决方法_第1张图片

2、数据库远程访问权限没开启

可以先自行查询,首先连接上本机Mysql:

#回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>
mysql -uroot -p

服务器本机连接上mysql后执行以下命令:

#数据库中有一张user表记录所有用户,以下命令就是查看所有用户及其访问权限
SELECT user,host FROM mysql.user;

我这里的查询结果如下:
mysql远程连接常见问题及解决方法_第2张图片可以发现用户root对应的host一个是%,一个是localhost.
localhost表示只允许本地访问,%表示可以任意ip访问。如果你查询到的用户没有对应host为%,则说明mysql用户权限没有给到该用户远程访问权限。
那么此时只需修改root的对应权限就行了,执行以下语句:

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

3、数据库远程连接后新建数据库出错

在远程连接后当想要建数据库时却提示如下错误:

1044 -Access denied for user 'root'@'%' to database 

这个问题的原因还是用户权限的问题,解决方法是先在你的服务器中连接上MySQL,可以查看用户权限表,代码如下:

SELECT host,user,Grant_priv,Super_priv FROM mysql.user;

mysql远程连接常见问题及解决方法_第3张图片
注意看host为%的那一条记录,我这里是权限正常的,就是两个Y,如果查询到是N的话,就需要你执行语句给到远程连接的root用户建表建库的权限。
即执行以下命令:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

执行完后,重新使用navicat进行连接并进行建表建库操作,发现正常执行。

4、总结

mysql远程连接的一系列问题基本都是由于权限所引起的,只要用户权限分配到位了,基本不会有什么问题,希望这篇文章能够帮助到诸位。

你可能感兴趣的:(mysql,数据库,服务器)