MySQL安全机制
1、MySQL安全机制
MySQL的用户管理和权限管理
2、权限表
1)mysql.user
- 用户字段:Host、User、Password
- 权限字段:_Priv结尾的字段
- 安全字段:ssl x509字段
- 资源控制字段:max_开头的字段
2)mysql.db
- 用户字段:Host、User、Password
- 权限字段:剩下的_Priv结尾的字段
3)mysql.tables_priv,mysql.columns_priv、procs_priv
- 表、列、存储过程的授权表
4)授权级别排列:
- mysql.user #全局授权
- mysql.db #数据库级别授权
- 其他 #表级,列级授权
3、登录
- mysql -u用户名 -p密码 [ -h主机 ] [ -P端口 ];
- mysql -u用户名 -p密码 [ -h主机 ] [ -P端口 ] [ -e"SQL语句" ];
4、管理用户
用户定义时,如果不指定主机名,则会使用默认的主机名%(授予用户权限而不管主机名)
● 创建:CREATE USER 和
CREATE USER user_name@localhost [ IDENTIFIED BY 'password' ];可以不创建口令
GRANT SELECT ON *.* TO 用户名@客户端主机 IDENTIFIED BY "密码";授SELECT权所有库和表给该用户
INSERT INTO mysql.user(host,user,ssl_cipher,x509_issuer,x509_subject) VALUES("主机","客户端主机","","","");后面三个字段值可以为空,还可以根据添加字段插入值,如密码字段,desc user查看字段;一般不建议这种创建方法
● 重命名:RENAME USER old_user_name@客户端主机 TO new_user_name@"客户端主机" ;
● 删除:DROP USER
● 更改口令密码:
SET PASSWORD FOR 用户名@客户端主机 = Password("新密码口令");新口令必须传递到Password()函数中
SET PASSWORD = Password("新密码口令");在不指定用户名时,更改的是当前用户的口令
● 刷新用户授权表:FLUSH PRIVILEGES;
5、权限管理
1)查看访问权限:
SHOW GRANTS FOR user_name@主机名;可以不指定用户,则显示当前用户权限
2)授权访问权限:
GRANT 权限 [,权限...[,权限]] NO 数据库.数据表 TO 用户名@客户端主机;可以简化多次授权,并用逗号分隔
- GRANT需要明确一下信息:①要授予的权限,②被授予权限的数据库或表,③用户名
- 例:GRANT DELETE NO test.* TO yangyang@localh;此GRANT允许用户yangyang在test数据库中的所有表上使用delete权限
3)回收访问权限:
REVOKE 权限 ON 数据库.数据表 FROM 用户名@客户端主机;被回收的权限必须存在,否则会出错。
GRANT 和 REVOKE 可在几个层次上控制访问权限:
- 整个服务器,使用 GRANT ALL 和 REVOKE ALL;
- 整个数据库,使用 ON datebase.*;
- 特定的表:使用 ON datebase.table;
- 特定的列
- 特定的存储过程

浙公网安备 33010602011771号