mysql 安全机制_MySQL 安全机制

摘要:MySQL 的用户管理和权限管理

1. 权限表

mysql数据库中的表说明mysql.user用户字段: Host, User, Password

权限字段: _priv结尾的字段

安全字段: ssl x509字段

资源控制字段: max_开头的字段

mysql.db用户字段: Host, User, Db

权限字段: 剩下的_priv结尾的字段

mysql.tables_priv, mysql.columns_priv, procs_priv表,列,存储过程的授权表

授权级别排列mysql.user # 全局授权

mysql.db # 数据库级别授权

其他 # 表级,列级授权

2. 用户管理

2.1 登陆和退出MySQLmysql -h host -p port -u user -ppassword -e 'SQL语句'

mysql.user表中授权什么主机的什么用户可以登陆

2.2 创建用户-- 刷新授权表

mysql> flush privileges;mysql> create user xff@'%' identified by '123456';

Query OK, 0 rows affected (0.01 sec)

-- 查看权限基本为空

mysql> select * from mysql.user where user='xff'\G

*************************** 1. row ***************************

Host: %

User: xff

Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9

Select_priv: N

Insert_priv: N

Update_priv: N

Delete_priv: N

Create_priv: N

Drop_priv: N

Reload_priv: N

Shutdown_priv: N

Process_priv: N

File_priv: N

Grant_priv: N

References_priv: N

Index_priv: N

Alter_priv: N

Show_db_priv: N

Super_priv: N

Create_tmp_table_priv: N

Lock_tables_priv: N

Execute_priv: N

Repl_slave_priv: N

Repl_client_priv: N

Create_view_priv: N

Show_view_priv: N

Create_routine_priv: N

Alter_routine_priv: N

Create_user_priv: N

Event_priv: N

Trigger_priv: N

Create_tablespace_priv: N

ssl_type:

ssl_cipher:

x509_issuer:

x509_subject:

max_questions: 0

max_updates: 0

max_connections: 0

max_user_connections: 0

plugin: mysql_native_password

authentication_string:

password_expired: N

1 row in set (0.01 sec)-- 创建用户并且授权

grant select on *.* to user3@'localhost' identified by '123456';

2.3 删除用户mysql> drop user xff;

Query OK, 0 rows affected (0.00 sec)mysql> delete from user where user='user3';

Query OK, 1 row affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

2.4 修改密码

2.4.1 通过 mysqladmin 修改密码

mysqladmin -u root -ppasswd password 'passwd'

2.4.2 普通用户修改自己的密码-- 普通用户对于user表没有权限的话,只能修改自己的密码

mysql> set password for username@'localhost'=password('mysql123');

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

2.4.3 通过修改 user 表来修改密码mysql> update user set password = password('passwd') where user='root';

Query OK, 1 row affected (0.01 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

3. 权限管理

3.1 权限应用的顺序

user(Y|N) >= db >= tables_priv >= columns_priv

相应权限对于的表为:

mysql.user >= mysql.db >= mysql.tables_priv >= mysql.columns_priv

一个用户对一个数据库有权限则可以创建,删除这个数据库

3.2 语法格式

grant 权限列表 on 库名.表名 to ‘用户名’@’客户端主机’ [identified by ‘密码’ with grant option];权限列表

all <==> 所有权限(不包括授权权限,如果有了grant语句最后有grant option则有了授权权限)

select(列1, 列2, …), update数据库.表名参数说明.所有库的所有表客户端主机参数说明%所有主机

192.168.1.%192.168.2.0网段的所有主机

192.168.2.1某个特定的主机with_option 参数参数说明GRANT OPTION授权选项

MAX_QUERIES_PER_HOUR允许每小时执行的查询数

MAX_UPDATES_PER_HOUR允许每小时执行的更新数

MAX_CONNECTIONS_PER_HOUR允许每小时可以建立连接数

MAX_USER_CONNECTIONS定义单个用户同时可以建立的连接数

3.3 查看权限-- 查看当前用户所有授权

show grants\G

-- 管理员查看其它用户权限

show grants for username\G

3.4 权限的回收-- 不会删除用户

revoke 权限列表 on 数据库名 from 用户名@'客户端主机'revoke delete on *.* from admin1@'%'; -- 回收删除权限

revoke grant option on *.* from admin1@'%'; -- 取消授权权限

-- 删除用户

delete from mysql.user where user='admin1'

flush privileges

本文由【waitig】发表在等英博客 本文固定链接:MySQL 安全机制 欢迎关注本站官方公众号,每日都有干货分享!

点赞 (1)赏分享 (0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值