mysql 安全字段参数_MYSQL数据库学习十六 安全性机制

本文详细介绍了MySQL数据库的权限系统,包括用户表结构(如user表和权限字段)、系统表mysql.db和mysql.host的功能、权限管理方法(授权、查看与收回)、用户创建与修改,以及资源控制。重点展示了如何通过GRANT和REVOKE语句管理权限,并提供了实例说明。
摘要由CSDN通过智能技术生成

16.1 MYSQL数据库所提供的权限

16.1.1 系统表 mysql.user

1. 用户字段

Host:主机名;

User:用户名;

Password:密码。

2. 权限字段

以“_priv”字符串结尾的字段

通常,可以使用GRANT语句为用户赋予一些权限,也可以通过Update语句更新user表的方式来设置权限;

不过,修改user表之后,一定要执行一下FLUSH PRIVILEGES,否则可能会出现如下错误:

Error (1133): Can’t find any matching row in the user table

user表中的列

权限名称

权限范围

Create_priv

CREATE

数据库、表或索引

Drop_priv

DROP

数据库或表

Grant_priv

GRANT OPTION

数据库、表、存储过程、函数

References_priv

REFERENCES

数据库和表

Alter_priv

ALTER

修改表

Delete_priv

DELETE

删除表

Index_priv

INDEX

用索引查询表

Insert_priv

INSERT

插入表

Select_priv

SELECT

查询表

Update_priv

UPDATE

更新表

Create_view_priv

CEATE VIEW

创建视图

Show_view_priv

SHOW VIEW

查看视图

Create_routine_priv

CREATE ROUTINE

创建存储过程或函数

Alter_routine_priv

ALTER ROUTINE

修改存储过程或函数

Execute_priv

EXECUTE

执行存储过程或函数

File_priv

FILE

加载服务器主机上的文件

Create_tmp_table_priv

CREATE TEMPORARY TABLES

创建临时表

Lock_tables_priv

LOCK TABLES

锁定表

Create_user_priv

CREATE USER

创建用户

Process_priv

PROCESS

服务器管理

Reload_priv

RELOAD

重新加载权限表

Repl_client_priv

REPLICATION CLIENT

服务器管理

Repl_slave_priv

REPLICATION SLAVE

服务器管理

Show_db_priv

SHOW DATABASES

查看数据库

Shutdown_priv

SHUTDOWN

关闭服务器

Super_priv

SUPER

超级权限

Event_priv

创建、修改和删除事件

Trigger_priv

创建和删除触发器

3. 安全字段

字段名

含义

ssl_type

支持ssl标准加密的安全字段

ssl_cipher

支持ssl标准加密的安全字段

x509_issuer

支持x509标准的字段

x509_subject

支持x509标准的字段

在MySQL中,包含ssl字符串的字段主要用来实现加密,包含x509字符串的字段主要用来标识用户。

MySQL的字段通常不支持ssl标准,可以通过以下语句查看字段是否支持ssl标准:

SHOW VARIABLES LIKE 'have_openssl'

4.资源控制字段

max_questions:每小时可以允许执行多少次查询;

max_updates:每小时可以允许执行多少次更新;

max_connections:每小时可以建立多少连接;

max_user_connections:单个用户可以同时具有的连接数。

默认值为0,表示无限制。

16.1.2 系统表 mysql.db 和 mysql.host

1.用户字段

mysql.db

Host:主机名;

User:用户名;

Db:数据库名。

mysql.host 是mysql.db的扩展

Host:主机名;

Db:数据库名。

当查找某个用户的权限,首先会从系统表 mysql.db 中查找,如果找不到Host的值,则到 mysql.host 去查找。

2.权限字段

mysql.db比mysql.host多了两个字段:

Create_routine_priv:创建存储过程或函数权限。

Alter_routine_priv:修改存储过程或函数权限。

16.1.3 其他权限表

mysql.tables_priv:实现单个表的权限设置。

columns_priv:实现单个字段列的权限设置。

16.2 MYSQL数据库所提供的用户机制

16.2.1 登录和退出MySQL

mysql -h hostname|hostIP -p port -u username -p DatabaseName -e "SQ语句"

-p port:未指定默认为3306;

DatabaseName:未指定默认为mysql.

EXIT|QUIT

16.2.2 创建普通用户账户

1.CREATE USER

CREATE USER username[IDENTIFIED BY [PASSWORD] 'password']

[,IDENTIFIED BY [PASSWORD] 'password']

......

2.INSERT INTO

INSERT INTO mysql.user(Host,User,Password[,ssl_cipher,x509_issuer,x509_subject])

VALUES('%','username',PASSWORD('password')[,'','','']);

3.GRANT

GRANT priv_type ON databasename.tablename

TO username[IDENTIFIED BY [PASSWORD] 'password']

[,username [IDENTIFIED BY [PASSWORD] 'password']]

......

16.2.3 利用root修改root用户账号密码

1.mysqladmin

mysqladmin -u username -p password "newpassword";

2.SET PASSWORD

SET PASSWORD=PASSWORD("newpassword");

3.UPDATE

UPDATE mysql.user SET password=PASSWORD("newpassword")

WHERE user="root" AND host="localhost";

16.2.4 利用root修改普通用户账号密码

1.GRANT

GRANT priv_type ON database.table

TO user[IDENTIFIED BY [PASSWORD] "newpassword"];

2.SET PASSWORD FOR

SET PASSWORD FOR

'username'@'hostname'=PASSWORD("newpassword");

*当通过普通用户账户登录到MySQL服务器后,可以通过SET命令修改自己的密码。

SET PASSWORD=PASSWORD("newpassword");

3.UPDATE

UPDATE mysql.user SET password=PASSWORD("newpassword")

WHERE user="username" AND host="localhost";

16.2.5 删除普通用户账号

1.DROP USER

DROP USER user1[,user2] ...

2.DELETE FROM

DELETE FROM mysql.user

WHERE user="username" AND host="localhost";

16.3 权限管理

16.3.1 对用户进行授权

GRANT priv_type [(column_list)] ON database.table

TO user [IDENTIFIED BY [PASSWORD] 'password']

[,user [IDENTIFIED BY [PASSWORD] 'password']]

...

WITH with_option[with_option]

with_option参数取值:

GRANT OPTION:被授权的用户可以将这些权限赋予给别的用户;

MAX_QUERIES_PER_HOUR count:设置每小时可以允许执行count次查询;

MAX_UPDATES_PER_HOUR count:设置每小时可以允许执行count次更新;

MAX_CONNECTIONS_PER_HOUR count:设置每小时可以建立count个连接;

MAX_USER_CONNECTIONS count:设置单个用户可以同时具有的count个连接数;

16.3.2 查看用户所拥有权限

SHOW GRANTS FOR 'username'@'localhost' \G

16.3.3 收回用户所拥有权限

REVOKE priv_type[(column_list)] ON database.table

FROM user1 [IDENTIFIED BY[PASSWORD] 'password']

[,user2 [IDENTIFIED BY[PASSWORD] 'password']]

...

收回全部权限:

REVOKE ALL PRIVILEGES,GRANT OPTION

FROM user1 [IDENTIFIED BY[PASSWORD] 'password']

[,user2 [IDENTIFIED BY[PASSWORD] 'password']]

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值