红联Linux门户
Linux帮助

mysql权限管理

发布时间:2016-09-14 10:40:45来源:linux网站作者:Yum51
一.新建与删除用户
1.新建:create user '用户名' identified by '用户密码';
2.删除:drop user '用户名'@'本地或远程'; 
如删除本地用户kkk: drop user 'kkk'@'host';
注:不管是新建或删除均只有在刷新权限后操作才会生效。
 
二.设置与更新密码,以加密方式
1.设置密码(默认方式):update mysql.user set password=password('***') where user='root'; 
2.更新密码(指定用户权限身份):update mysql.user set password=password('新密码') where user="用户名" and host="本地或远程";
举例如:update mysql.user set password=password('新密码') where user="test" and host="localhost";
注:设置在刷新权限后生效(flush privileges;)
 
3.忘记root密码(centos为例):
I: 修改mysql的配置文件: vim /etc/my.cnf
在[mysqld]下新增skip-grant-tables  保存退出,重启mysql服务
II:执行 mysql -uroot -p  以空密码方式进入,再以修改密码方式重置密码
III:回mysql的配置文件,注释掉刚刚所添加的 skip-grant-tables。保存退出,重启mysql服务。
 
三.权限授予与收回(对用户,对库)
1.数据库的权限有:
* ALTER: 修改表和索引。
* CREATE: 创建数据库和表。
* DELETE: 删除表中已有的记录。
* DROP: 抛弃(删除)数据库和表。
* INDEX: 创建或抛弃索引。
* INSERT: 向表中插入新行。
* REFERENCE:未使用。
* SELECT: 检索表中的记录。
* UPDATE: 修改现存表记录。
* FILE: 读或写服务器上的文件。
* PROCESS: 查看服务器中执行的线程信息或杀死线程。
* RELOAD: 重载授权表或清空日志、主机缓存或表缓存。
* SHUTDOWN: 关闭服务器。
* ALL: 所有权限,ALL PRIVILEGES同义词。
* USAGE: 特殊的 “无权限” 权限。
2.权限授予:
举例1-限定网段:对root用户开放所有权限但设置只允许10.x.x.x网段内的主机远程连接 如:grant all privileges on *.* to 'root'@'10.%' identified by '****' with grant option; 
举例2-限定IP:
grant all privileges on *.* to 'root'@'10.12.1.23' identified by '****' with grant option;
举例3-限定多个数据库(对于数据库名称前面相同的情况如:均以 sm_ 作为开头的数据库):
grant select,update,insert on `sm_%`.* to test@'%' identified by 'test';
注意:此处的  sm_%  上的符号不是单引号,而是键盘左上角的小点命令符 。另外 有个地方留点心思: grant option表示允许被创建的用户自己继续对其所建用户授予自身所拥有的权限。比如root用户最开始建了一个用户A,对其授予了 grant option。这样用户A便可自己创建用户并对其给予本身所拥有的相应数据库权限。
3.权限收回:
revoke 授予的权限 on *.* from '用户名'@'本地或远程标识';
如:收回授予远程登陆的root所有权限
revoke all on *.* from 'root'@'%';### 注意取消授权后用户的记录任在mysql.user中,用户还是可以连接的,此时只有进一步清掉mysql.user表中的记录才可以做到拒绝用户登录
注:刷新权限才能使操作生效
 
四.清除mysql.user表中的用户记录
1.delete from mysql.user where user='用户名' and host='本地或远程标识符';
举例如:清除mysql.user表中的远程可登用户root的记录
delete from mysql.user where user='root' and host='%';
flush privileges;
 
五.查询用户的权限,密码情况:
1.select user,host,password from mysql.user;  ## password 可以根据需要添加
如图:
mysql权限管理
2.查询当前用户的情况: select user();
3.查询当前使用的mysql版本: select version();
 
本文永久更新地址:http://www.linuxdiyf.com/linux/24149.html