重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
MySQL权
限系统
创新互联公司专业为企业提供辉南网站建设、辉南做网站、辉南网站设计、辉南网站制作等企业网站建设、网页设计与制作、辉南企业网站模板建站服务,10年辉南做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
设置 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 :允许的同时连接数量