MySQL用户管理

权限(privilege):
CREATE
DROP
ALTER
DELETE
INDEX
INSERT
SELECT
UPDATE
CREATE VIEW
SHOW VIEW
ALTER ROUTINE
CREATE ROUTINE
EXECUTE
FILE
CREATE TEMPORARY TABLES
LOCK TABLES
CREATE USER
PROCESS
RELOAD
REPLICATION CLIENT
REPLICATION SLAVE
SHOW DATABASES
SHUTDOWN
SUPER


一、创建用户并分配权限:
SQL语句:
-------------------------------------------------------------------------
GRANT privileges [(columns)]
ON item
TO 'user_name'@'host_name' [IDENTIFIED BY 'password']
[REQUIRE ssl_options]
[WITH [GRANT OPTION | limit_option]]
-------------------------------------------------------------------------
1) privileges子句
分成三种类型的访问权限: 管理权限(如: SHUTDOWN, FILE, RELOAD等)
数据库等的操作权限(如: SELECT, UPDATE, INSERT,DELETE等)
特殊权限: ALL代表除GRANT外的所有权限,USAGE代表无权限

2) columns 指定数据列的访问权限( 如: SELECT( newsId, title) )

3) item 指定有关权限的作用范围:
*--当未指定数据库时:所有数据库的所有表。指定数据库当前数据库所有表,
*.*--所有数据库中的所有表
dbName.*--指定数据库的所有表
dbName.tbName--指定数据库指定表
tbName默认数据库的指定表

4) user_name新用户的用户名

5) host_name主机名--'%'表示所有的主机( 'user_name'@'%' = 'user_name')。在host_name 中可以有通配符*如: 202.115.6.*

6) IDENTIFIED BY 'password'用户密码设置。不提供该子句的出现的两种情况:创建新用户时--密码为空, 修改用户时--密码不变

7) REQUIRE ssl_option 是否要用加密连接mysql(只有unix mysql支持,一般不用该子句)

8) WITH GRANT OPTION 创建的用户是否能够把自己的权限分配给别的用户

8.1) WITH MAX_CONNECTION_PER_HOUR n MAX_QUERIES_PER_HOUR n MAX_UPDATES_PER_HOUR N;用来设置该用户最大的连接数,每小时查询次数,每小时修改次数。默认情况下无限制。

-----------------------------------------------------------------------------------------------------------
二:收回权限和删除用户
SQL语句:
REVOKE privileges (columns) ON item FROM account
account必须与授予权限时一致,而privileges不用一致。

例子:收回用户的所有权限并删除用户
一种方法:
删除出授权权限外的所有权限
mysql> REVOKE ALL ON *.* FROM userName;
如有为用户添加授权权限则
mysql> REVOKE GRANT OPTION ON *.* FROM userName;
如果创建时要求用户必须使用SSL连接则必须:
mysql> GRANT USAGE ON *.* TO userName REQUIRE NONE;
如果创建时要求用户必须设置连接数等:
mysql> GRANT USAGE ON *.* TO userName WITH MAX_CONNECTION_PER_HOUR 0 MAX_QUERIES_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
上面只是收回了权限,下面是删除用户
mysql> use mysql;
mysql> DELETE FROM user WHERE User= 'userName' and Host = 'hostName';
mysql> FLUSH PRIVILEGES;(重新载入授权表)

更简单的一种方法:
mysql> delete from user where User = 'userName' and Host = 'hostName';
mysql> delete from db where User = 'userName' and Host = 'hostName';
mysql> delete from columns_pri where User = 'userName' and Host = 'hostName';
mysql> delete from tables_pri where User = 'userName' and Host = 'hostName';
mysql> flush privileges;

--------------------------------------------------------------------------------------------------------
三: (扩展)修改口令&设置丢失的口令
方法一: mysql> GRANT USAGE ON *.* TO 'userName'@'hostName' IDENTIFIED BY 'newPassword';

方法二: mysql> set password for 'userName'@'hostName' = PASSWORD('newPassword')

方法三 : mysql> use mysql;
mysql> update User set password = PASSWORD('newPassword') where User = 'userName' AND Host = 'hostName';
mysql> FLUSH PRIVILEGES;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值