千家信息网

MySQL权限系统

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,MySQL权 限系统 1) 设置口令设置 MySQL 用户口令的方法有多种:- CREATE USER...IDENTIFIED BY- GRANT...IDENTIFIED BY- SET PASS
千家信息网最后更新 2025年02月05日MySQL权限系统

MySQL权 限系统

1) 设置口令


设置 MySQL 用户口令的方法有多种:

- CREATE USER...IDENTIFIED BY

- GRANT...IDENTIFIED BY

- SET PASSWORD

- mysqladmin password

- UPDATE 授权表(不推荐)

为所有用户帐户分配唯一的强口令。

? 避免可以轻易猜测到的口令。

? 使用以下 SELECT 语句可列出没有口令的所有帐户:

SELECT Host, User FROM mysql.user

WHERE Password = '';

? 确定重复口令:

SELECT User FROM mysql.user GROUP BY password

HAVING count(user)>1;

? 让口令失效:

ALTER USER jim@localhost PASSWORD EXPIRE;

2) Mysql 支持的权限

Privilege

Meaning and Grantable Levels

ALL [PRIVILEGES]

Enable use of ALTER TABLE . Levels: Global, database, table.

ALTER ROUTINE

Enable stored routine creation. Levels: Global, database.

CREATE TABLESPACE

Enable views to be created or altered. Levels: Global, database, table.

DELETE

Enable databases, tables, and views to be dropped. Levels: Global, database, table.

EVENT

Enable the user to cause the server to read or write files. Level: Global.

GRANT OPTION

Enable use of INSERT . Levels: Global, database, table, column.

LOCK TABLES

Enable foreign key creation. Levels: Global, database, table, column.

RELOAD

Enable the user to ask where master or slave servers are. Level: Global.

REPLICATION SLAVE

Enable use of UPDATE . Levels: Global, database, table, column.

USAGE


3) 允许的主机名格式示例

? 主机名: localhost

? 合格的主机名: 'hostname.example.com'

? IP 编号: 192.168.9.78

? IP 地址: 10.0.0.0/255.255.255.0

? 模式或通配符: % _

用户名和主机名示例:

? john@10.20.30.40

? john@'10.20.30.%'

? john@'%.ourdomain.com'

? john@'10.20.30.0/255.255.255.0'

4) GRANT 语句

? GRANT 语句可创建新帐户或者修改现有帐户。

? GRANT 语法:

GRANT SELECT ON world_innodb.* TO

'kari'@'localhost' IDENTIFIED BY 'Abc123';

? 该语句的子句:

- 要授予的权限

- 权限级别:

- 全局: *.*

- 数据库: .*

- 表: .

- 存储例程: .

- 要授予其权限的帐户

- 可选口令

5) 权限级别 / 表内容和权限

user 针对服务器已知的每个帐户包含一个记录

db 特定于数据库的权限

tables_priv 特定于表的权限

columns_priv 特定于列的权限

procs_priv 存储过程和函数权限

6) 撤消帐户权限

? 使用 REVOKE 语句可以撤消特定的 SQL 语句权限:

REVOKE DELETE, INSERT, UPDATE ON world_innodb.*

FROM 'Amon'@'localhost';

? 撤消权限以便将权限授予其他用户:

REVOKE GRANT OPTION ON world_innodb.*

FROM 'Jan'@'localhost';

? 撤消所有权限(包括向他人授权):

REVOKE ALL PRIVILEGES, GRANT OPTION

FROM 'Sasha'@'localhost';

? 在发出 REVOKE 之前使用 SHOW GRANTS 语句确定要

撤消的权限,随后再次确认结果。

7) 禁用客户机访问控制

要指示服务器不读取授权表并禁用访问控制,可使用

--skip-grant-tables 选项。

? 每个连接都成功:

- 可以提供任何用户名及任何口令,并且可以从任何主机连接。

- 该选项将禁用整个权限系统。

- 连接的用户实际上拥有所有权限。

? 阻止客户机连接:

- 使用 --skip-networking 选项可阻止网络访问,并且仅允许在本地套接字、命名管道或共享内存上访问。

- 使用 --socket 选项可在非标准套接字上启动服务器以防止本地应用程序或用户随便访问。

8) 资源限制

通过将全局变量 MAX_USER_CONNECTIONS 设置为非

零值,限制使用服务器资源。

- 这将限制任何一个帐户的同时连接数量,但不会限制客

户机在连接后能执行的操作。

? 限制单个帐户的以下服务器资源:

- MAX_QUERIES_PER_HOUR :一个帐户每小时可发出的查询数量

- MAX_UPDATES_PER_HOUR :一个帐户每小时可发出的更新数量

- MAX_CONNECTIONS_PER_HOUR :一个帐户每小时可连接到服务器的次数

- MAX_USER_CONNECTIONS :允许的同时连接数量

0