ζ°≡ 爪哇攻城狮

MySQL之权限管理

前言

  在实际开发中,基于安全性考虑,不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但是使用root时,因为一些误操作而产生的影响,那将会是很大的。对DBA而言,不同的使用者授予不同权限,会是比较恰当的处理方法。例如:一个只进行数据插入的用户不应赋予其删除数据的权限。一个只能查看数据的用户不授予增删改的权限。

查看当前使用的数据库
select database();

查看当前使用的账户
show processlist;

查看数据库的所有用户
select * from mysql.user;
或者
use mysql;
select * from user;

查看某个用户具有的权限
show grants for ‘用户名’@’登入地址’;
例如:show grants for ‘yy’@’localhost’;

修改用户密码
update user set password=password(‘新密码’) where user = ‘用户名’;

MySQL数据库的权限管理

  windows中MySQL以服务形式存在,在使用前应确保此服务已经启动,未启动可用net start mysql命令启动,或者进入控制面板中的服务设置。
  Linux中启动时可用“/etc/rc.d/init.d/mysqld start”命令,注意启动者应具有管理员权限。
MySQL的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。

GRANT的语法

grant [权限] on [在哪些数据库/表] to [新用户名称]@[登入地址] identified by [“密码”];
– usage只允许登入
grant usage on . to NewUserName@HostName identified by “password”;
– 授予全部权限
grant all on mydb.* to NewUserName@HostName identified by “password” ;
– 授予select insert update权限,作用范围在mydb数据库下的所有表
grant select,insert,update on mydb.* to NewUserName@HostName identified by “password”;
– 授予pdate、delete权限,作用范围在mydb数据库下的TestTable
grant update,delete on mydb.TestTable to NewUserName@HostName identified by “password”;

CREATE的语法

首先创建用户:create user [新建的用户名]@[登入地址] identified by [‘密码’];
然后授权:grant [权限,可以多项] on [在哪些数据库/表] to [新用户名称]@[登入地址];

– 创建一个yy用户,然后授权usage、select,作用范围是全部数据库
create user ‘yy’@’localhost’ identified by ‘123456’;
grant usage,select on *test* to ‘yy’@’localhost’;
– delete权限作用范围在test数据库下面的infos表中
grant delete on test.infos to ‘yy’@’localhost’;

权限详细

全局管理权限

FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:
Alter: 修改已存在的数据表(例如增加/删除列)和索引。
Create: 建立新的数据库或数据表。
Delete: 删除表的记录。
Drop: 删除数据表或数据库。
INDEX: 建立或删除索引。
Insert: 增加表的记录。
Select: 显示/搜索表的记录。
Update: 修改表中已存在的记录。

特别的权限

ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录–其它什么也不允许做。

权限的收回

  注意:必须使用root账户(管理员账户)操作
语法:
REVOKE privilege ON databasename.tablename FROM ‘username’@’host’;
– 收回全部权限
revoke all on . from ‘yy’@’localhost’;
– 收回部分权限
revoke delete on testssm.infos from ‘yy’@’localhost’;

删除用户

语法: DROP USER ‘username’@’host’;

坚持原创技术分享,您的支持将鼓励我继续创作!