【MySql】权限不足导致的无法连接到数据库以及权限的授予和撤销

【环境参数】

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.1

6、MySql: 5.1.73

【障碍再现】

    Host is not allowed to connect to this MySql Server

当“初次”在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

时间: 2024-10-10 18:23:54

【MySql】权限不足导致的无法连接到数据库以及权限的授予和撤销的相关文章

Navicat连接Oracle数据库用户权限问题

解决Navicat连接Oracle数据库用户权限问题: 第一步:在cmd窗口运行[sqlplus] 第二步:输入Oracle的用户名和口令连接Oracle数据库. 第三步:执行授权代码 [grant dba to 用户名;] 第四部:执行[grant all privileges to 用户名;] 原文地址:https://www.cnblogs.com/lyang-a/p/11638494.html

Android权限管理PermissionsDispatcher2.3.2使用+原生6.0权限使用

PermissionsDispatcher2.3.2使用 Android6.0权限官网https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html?hl=zh-cn系统权限:https://developer.android.com/training/permissions/index.html?hl=zh-cn权限的最佳做法:https://developer.android.com/trai

Mysql转移数据目录,开启远程连接权限

mysql的有时候数据会非常大,mysql数据默认放在/var/lib/mysql,由于/var所划分的空间不够大,所以我们需要修改mysql数据存放路径,以便可以应付mysql数据增长和数据的备份. 1.设置新的存放路径mkdir -p /data/mysql 2.复制原有数据, 保持权限cp -Ra /var/lib/mysql/* /data/mysql 3.修改配置文件vim /etc/mysql/my.cnfdatadir = /data/mysql 4.修改启动文件vim /etc/

无法远程连接mysql,连接后也没有权限创建数据库

问题现象:无法远程连接mysql,连接后也没有权限创建数据库 问题原因: MySql-Server 出于安全方面考虑只允许本机(localhost, 127.0.0.1)来连接访问. 这对于 Web-Server 与 MySql-Server 都在同一台服务器上的网站架构来说是没有问题的. 但随着网站流量的增加, 后期服务器架构可能会将 Web-Server 与 MySql-Server 分别放在独立的服务器上, 以便得到更大性能的提升, 此时 MySql-Server 就要修改成允许 Web-

Win2003中配置FTP服务,开启防火墙导致客户端无法连接【精华详解】

因为某种需求,我们在Win2003中配置FTP,可能使用的是IIS可能使用的是其他的服务软件,可能是出于安全的考虑我们必须开启防火墙,可开启防火墙导致客户端无法连接,关闭防火墙反而可以正常使用.由此我们得出,问题肯定是处在了端口上. 第一时间我们百度去寻求解决问题,很少能找到一篇满意的文章.都几乎是千篇一律的草文. 在这里整了下一下解决方案,如果你的问题满足上述内容,即可往下看. 解决方案: 开启防火墙,为了安全着想,不然就没必须费那么大神了. 在防火墙的例外设置中添加21端口(如果你有其他服务

phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接

phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接--解决方法 phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接.您应该检查配置文件中的主机.用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致. 原因有可能是因为修改了mysql数据库的密码导致. 解决方法: 1)修改phpmyadmin 下的config.inc.php中的 $cfg['Servers'][$i]['password'] = '';选项 2)修改$cfg['Serv

linux下用非root用户重启导致ssh无法连接的问题

问题描述 安装好了centOS服务器,一直用Secure CRT工具通过ssh服务来远程连接linux,很方便的进行各种操作.今天偶然尝试了一下在非root的一般用户下执行重启服务器的命令,发现一般用户是没有权限执行重启的,果断使用sudo命令再次执行,终于重启成功,却发现Secure CRT再也连不上服务器了,郁闷不已,去网上查找各种资料总算有了一点粗浅的认识,记录下来,也让其他的linux beginner们能够少走些弯路吧. 普通用户下执行重启命令: shutdown -r now 或者

Mysql数据库的权限、索引基本操作

数据库的关闭方法: 1.优雅的关闭数据库的方法:mysqladmin -uroot -p123456 shutdown 2.脚本关闭:/etc/init.d/mysqld stop 3.使用kill信号的方法(最好不用)kill -USR2 'cat path/pid' history不记录历史命令 HISTCONTROL=ignorespace (敲命令的时候加一个空格,可以不记录) 善于使用mysql的help Mysql设置密码的方法:mysqladmin -uroot password

Mysql中的关联查询(内连接,外连接,自连接)

Mysql中的关联查询(内连接,外连接,自连接) 在使用数据库查询语句时,单表的查询有时候不能满足项目的业务需求,在项目开发过程中,有很多需求都是要涉及到多表的连接查询,总结一下mysql中的多表关联查询 一,内连接查询 是指所有查询出的结果都是能够在连接的表中有对应记录的. 以t_employee(员工表)和t_dept(部门表)为例: t_employee表中的记录如下:dept代表该员工所在的部门 t_dept表中记录如下: 可以发现,其中人力资源部里没有员工(这里只是举例,可能与实际不符