当前位置: 澳门新濠3559 > 数据库 > 正文

MySQL权限设置正确,比如下边这个就是建用户赋权

时间:2019-11-29 07:15来源:数据库
mysql5.7设置远程访问不是和网上说的一样建个用户赋个权限就可以访问的。比如下边这个就是建用户赋权限,可能在之前的版本可以,但是我在我的mysql上一直不行。为此烦了好久!!!

mysql5.7设置远程访问不是和网上说的一样建个用户赋个权限就可以访问的。比如下边这个就是建用户赋权限,可能在之前的版本可以,但是我在我的mysql上一直不行。为此烦了好久!!!项目都耽误了!!

可能是IP没设置好

一、原来设置远程访问的方式

Mysql默认是不可以通过远程机器访问的,通过下面的配置可以开启远程访问 

在MySQL Server端: 

执行mysql 命令进入mysql 命令模式, 

MySQL权限设置正确,比如下边这个就是建用户赋权限。Sql代码 

  1. mysql> use mysql;   
  2. mysql> GRANT ALL ON *.* TO user@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;   

#这句话的意思 ,允许任何IP地址(上面的 % 就是这个意思)的电脑 用admin帐户  和密码(admin)来访问这个MySQL Server   

#必须加类似这样的帐户,才可以远程登陆。 root帐户是无法远程登陆的,只可以本地登陆  

问题:MySQL权限设置正确,但仍无法远程访问。通过telnet发现3306端口未打开。

远程访问:

  1. mysql -h172.21.5.29 -uuser -p123456  即可了
  2. //172.21.5.29就是MySQL Server的IP地址,user就是刚才在 172.21.5.29上设置的远程访问帐户

  另外你也可以在一个机器上模拟远程访问,就是多开几个终端,方便测试是否可以远程访问。

 

我发现一个问题, 如果上面的命令你执行完毕, 你在 本地就是localhost , 执行 :

  1. mysql -hlocalhost -uadmin -padmin   

结果是失败的。 
原来 上面的 % 竟然不包括localhost 

所以你还必须加上这样的 命令:
mysql>GRANT ALL ON *.* TO admin@'localhost'  IDENTIFIED BY 'admin' WITH GRANT OPTION; 

分析:MySQL默认只绑定127.0.0.1,即:只有在本机才能访问3306端口。

二、mysql5.7中设置远程访问

我在按照上边的方法设置后,发现用mysql -h 并不能远程访问,修改了/etc/my.cnf配置文件把

#skip-networking 注释掉
加上bind-address=0.0.0.0

然而并没有卵用!

看得我都快背下来了!

后来我直接去看他的配置文件:在/etc/mysql文件夹下

澳门新濠3559 1

点开图中的my.cnf:  有下面一些话:

#
# * IMPORTANT: Additional settings that can override those from this file!

# 其他地方的配置可以覆盖此文件的配置
# The files must end with '.cnf', otherwise they'll be ignored.  
#

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

文件最后的两个路径我很好奇,就去看了下:conf.d/:

澳门新濠3559 2

里边一个配置文件,打开发现,就一个[mysql],然后啥都没有。

再看另一个:

澳门新濠3559 3

也有一个配置文件,打开发现有惊喜,就在这里边有一句话:

澳门新濠3559 4

瞬间有种见到天日的感觉!!!看它的注释就明白,只能本地连接,问题出在这!!

把bind-address注释掉:#bind-address=...

重启mysql服务,远程链接:

  1. mysql -h172.17.0.1 -uuser -p

//我的用户名是:user

终于进去了,哈哈!!

澳门新濠3559 5

为了这个折腾了两天!!!我是服气mysql的!!

 

解决:找到MySQL配置文件,搜索“bind-address”,找到这一行:

bind-address          = 127.0.0.1 在前面加一个#,注释掉这一行,保存,重启MySQL。再通过远程访问就可以了,telnet可以发现端口也打开了。

例我们配置

  1. 确保skip-networking被删除或者屏蔽,否则不支持TCP/IP 访问
  2. 增加行bind-address = 65.55.55.2,替代65.55.55.2 为你的服务器地址

修改后,配置为:

复制代码 代码如下:

[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/English
bind-address = 65.55.55.2
# skip-networking
....
..

保存并关闭配置文件
重启mysql服务器:# /etc/init.d/mysql restart

澳门新濠3559,如果上面办法没有用我们可以通用mysql命令模式进行设置

1。 改表法。

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

复制代码 代码如下:

CODE:mysql -u root -p123
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

  1. 授权法。

例如,你想kevin使用mypassword从任何主机连接到mysql服务器的话。

复制代码 代码如下:

GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允许用户kevin从ip为192.168.101.234的主机连接到mysql服务器,并使用mypassword作为密码

复制代码 代码如下:

GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'192.168.101.234' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

注意了,如果是linux系统防火墙也很重要哦

复制代码 代码如下:

/* 关闭防火墙 */
service iptables stop
/* 开启防火墙 */
service iptables start
/* 默认关闭防火墙 */
chkconfig iptables off

问题:MySQL权限设置正确,但仍无法远程访问。通过telnet发现3306端口未打开。 分析:MySQL默认只绑定127.0.0.1,即:只有在...

编辑:数据库 本文来源:MySQL权限设置正确,比如下边这个就是建用户赋权

关键词: