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
  • 特定的列
  • 特定的存储过程
posted @ 2019-10-19 17:16  ohmok  阅读(436)  评论(0)    收藏  举报