【MySql】权限不足导致的无法连接到数据库以及权限的授予和撤销
2015-05-18 18:25
465 查看
【环境参数】
1、Host OS:Win7 64bit
2、Host IP:192.168.10.1
3、VM: VMware 11.1.0
4、Client OS:CentOS 6
5、Client IP:192.168.10.129
6、MySql版本: 5.1.73
【障碍再现】
[b][b][b][b][b][b]Host is not allowed to connect to this MySql Server[/b][/b][/b][/b][/b][/b]
当“初次”在CentOS系统上(安装在虚拟机中)安装并且简单配置完MySql服务器之后,想要在本地访问虚拟机上的MySql数据库,当在本地输入mysql登陆命令后,出现如下图所示错误。
简而言之,即Host(192.168.10.1)不允许连接MySql数据库。
【障碍原因】
Host端的权限不足。
在MySql数据库服务器端的mysql数据库中,有一个user表,该表中就记录了可以登录MySql服务器的帐号相关信息,如下图所示。
此时,user表中的host字段仅仅有“localhost”这一条记录,则说明了MySql服务器仅仅允许从“localhost(此处的localhost指的是虚拟机)”登录到数据库。
因此,若想允许其他非localhost的用户访问,就要修改host字段的数值。
【解决方案01:改表法】
将user表中host字段中的数据修改为“%”
注意,修改完之后,要记得“刷新权限”,否则,Host端依然无法连接到MySql上。
【解决方案02:授权法】
以下几个示例可以作为有价值的参考:(自己经过测试,可以起效)
(1) 如果想要让数据库用户myDbUser01,使用密码myPassword,从"任何主机"连接到mysql服务器的话,可以使用如下命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myDbUser01'@'%' IDENTIFIED BY 'myPassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
(2) 如果想要让数据库用户myDbUser01,使用密码myPassword,从"ip为192.168.10.1的主机"连接到mysql服务器,可以使用如下命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myDbUser01'@'192.168.10.1' IDENTIFIED BY 'myPassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
(3) 如果想要让数据库用户myDbUser01,使用密码myPassword,从ip为192.168.10.1的主机连接到mysql服务器的"dk数据库",可以使用如下命令:
mysql> GRANT ALL PRIVILEGES ON dk.* TO 'myDbUser01'@'192.168.10.1' IDENTIFIED BY 'myPassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
【拓展:撤销用户权限】
命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';
说明: privilege, databasename, tablename - 同授权部分.
例子: REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
REVOKE语句只能取消用户的权限,而不可以删除用户。即使取消了所有的权限,用户仍然可以连接到服务器。
要想彻底的删除用户,必须使用DELETE语句将该用户的记录从MySQL数据库中的user表中删除。该语句的语法格式如下:
Delete from user where user = "user_name" and host = "host_name" ;
使用DELETE删除用户sss,代码如下:
mysql> use mysql
Database changed
mysql> delete from user where user='sss' and host='localhost' ;
mysql>flush privileges ;
Query OK, 1 row affected (0.02 sec)
其中,delete用于删除用户,flush告诉服务器重新加载授权表。
读者如要转载,请标明出处和作者名,谢谢。
地址01:http://space.itpub.net/25851087
地址02:http://www.cnblogs.com/zjrodger
作者名:zjrodger
1、Host OS:Win7 64bit
2、Host IP:192.168.10.1
3、VM: VMware 11.1.0
4、Client OS:CentOS 6
5、Client IP:192.168.10.129
6、MySql版本: 5.1.73
【障碍再现】
[b][b][b][b][b][b]Host is not allowed to connect to this MySql Server[/b][/b][/b][/b][/b][/b]
当“初次”在CentOS系统上(安装在虚拟机中)安装并且简单配置完MySql服务器之后,想要在本地访问虚拟机上的MySql数据库,当在本地输入mysql登陆命令后,出现如下图所示错误。
简而言之,即Host(192.168.10.1)不允许连接MySql数据库。
【障碍原因】
Host端的权限不足。
在MySql数据库服务器端的mysql数据库中,有一个user表,该表中就记录了可以登录MySql服务器的帐号相关信息,如下图所示。
此时,user表中的host字段仅仅有“localhost”这一条记录,则说明了MySql服务器仅仅允许从“localhost(此处的localhost指的是虚拟机)”登录到数据库。
因此,若想允许其他非localhost的用户访问,就要修改host字段的数值。
【解决方案01:改表法】
将user表中host字段中的数据修改为“%”
注意,修改完之后,要记得“刷新权限”,否则,Host端依然无法连接到MySql上。
【解决方案02:授权法】
以下几个示例可以作为有价值的参考:(自己经过测试,可以起效)
(1) 如果想要让数据库用户myDbUser01,使用密码myPassword,从"任何主机"连接到mysql服务器的话,可以使用如下命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myDbUser01'@'%' IDENTIFIED BY 'myPassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
(2) 如果想要让数据库用户myDbUser01,使用密码myPassword,从"ip为192.168.10.1的主机"连接到mysql服务器,可以使用如下命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myDbUser01'@'192.168.10.1' IDENTIFIED BY 'myPassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
(3) 如果想要让数据库用户myDbUser01,使用密码myPassword,从ip为192.168.10.1的主机连接到mysql服务器的"dk数据库",可以使用如下命令:
mysql> GRANT ALL PRIVILEGES ON dk.* TO 'myDbUser01'@'192.168.10.1' IDENTIFIED BY 'myPassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
【拓展:撤销用户权限】
命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';
说明: privilege, databasename, tablename - 同授权部分.
例子: REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
REVOKE语句只能取消用户的权限,而不可以删除用户。即使取消了所有的权限,用户仍然可以连接到服务器。
要想彻底的删除用户,必须使用DELETE语句将该用户的记录从MySQL数据库中的user表中删除。该语句的语法格式如下:
Delete from user where user = "user_name" and host = "host_name" ;
使用DELETE删除用户sss,代码如下:
mysql> use mysql
Database changed
mysql> delete from user where user='sss' and host='localhost' ;
mysql>flush privileges ;
Query OK, 1 row affected (0.02 sec)
其中,delete用于删除用户,flush告诉服务器重新加载授权表。
读者如要转载,请标明出处和作者名,谢谢。
地址01:http://space.itpub.net/25851087
地址02:http://www.cnblogs.com/zjrodger
作者名:zjrodger
相关文章推荐
- mysql用户删除导致discuz无法连接数据库
- mysql的1067错误导致无法连接数据库
- linux 中JDK环境变量不一致问题导致mysql无法连接,总是告诉权限出错
- MySql启动时无法连接数据库导致的2003问题
- MySQL通过localhost无法连接数据库的解决
- Mysql服务器重启后,客户端无法连接数据库
- Mysql无法连接远程数据库
- grid与oracle用户下oracle程序权限不一致导致ORA-15055/ORA-27123无法连接ASM问题
- 二进制安装MySQL5.5.39,磁盘空间不足导致MySQL无法启动
- VMware Workstation 无法连接到虚拟机。请确保您有权限运行该程序、访问改程序使用的所有目录以及访问所有临时文件目录。
- 2008下出现“授予的权限不足,无法执行此操作
- mysql:yum安装以及开启远程连接权限
- Oracle 数据库用户(user)的创建、删除以及授予权限
- oracle 监听blocked导致数据库无法连接
- navicat for mysql无法连接数据库和连接数据库慢的问题
- mysql 同一IP 产生太多终端的数据库连接导致阻塞
- 关于php 无法正常连接mysql 数据库,界面显示内部错误,返回值500
- 网站出现无法连接数据库错误,Temp文件夹权限对网站的影响
- 简单介绍ubuntu server与desktop关系以及解决ubuntu server下的mysql无法被远程连接
- MySQL之——表数据文件损坏导致数据库无法启动