添加、删除用户
1.添加用户
可以使用CREAT USER语法添加一个或多个用户,并设置相应的密码。
语法格式:
CREAT USER user [IDENTIFIED BY [PASSWORD] 'password']
[,user [IDENTIFIED BY [PASSWORD] 'password'] ] ...
其中,user的格式为:
‘user_name’@ 'host name'
注:user_name为用户名,host_name为主机名,password为该用户的密码。
使用自选的IDENTIFIED BY 子句,可以为账户给定一个密码。特别是要在纯文本中指定密码,需忽略PASSWORD关键词。如果不想以明文发送密码,而且知道PASSWORD()函数返回给密码的混编制,则可以指定该混编值,则可以制定该混编值,但要加关键字PASSWORD。
CREAT USER用于创建新的MySQL账户。CREAT USER会在系统本身的mysql数据库的user表中添加一个新记录。要是用CREAT USER,必须拥有mysql数据库的CREAT USER权限或INSERT权限。如果账户已经存在,则出现错误。
例:添加两个新的用户,king的密码为queen,cong的密码为707013
create user
'king' @ 'localhost' identified by 'queen',
'cong' @ 'localhost' identified by '707013';
完成后可以切换到mysql数据库,从user表中查到刚刚添加的两个用户记录:
use mysql
show tables;
select * from user
注:在用户名后面声明了关键字localhost。这个关键字指定用户创建的使用MySQL的连接所来自的主机。如果一个用户名和主机名中包含特殊符号如“_”,或通配符如“%”,则需要用单引号将其括起。“%”表示一组主机。
如果两个用户具有相同的用户名但主机不同,MySQL将其视为不同的用户,允许为这两个用户分配不同的权限集合。
如果没输入密码,那么MySQL允许相关的用户不使用密码登录。但是从安全的角度并不推荐这种做法。
2.删除用户
语法格式:
DROP USER user [, user_name]......
DROP USER 语句用于删除一个或多个MySQL账户,并取消其权限。要使用DROP USER ,必须拥有mysql数据库的全局CREATE USER权限或DELETE权限。
例:删除用户 palo
drop user Palo@localhost;
删除后可以用上面介绍的方法查看一下效果。如果被删的用户已经创建了表,索引或其他数据库对象,它们将继续保留,因为MySQL并没有记录是由谁创建了这些对象。
修改用户名、密码
1.修改用户名
可以使用RENAME USER语句来修改一个已经存在的SQL用户的名字。
语法格式:
RENANE USER old_user TO new_user,
[, old_user TO new_user]...
注:old_user为已经存在过的SQL用户,new_user为新的SQL用户。
RENAME USER语句用于对原有MySQL账户进行重新命名。要使用RENAME USER,必须拥有全局CREATE USER权限或mysql数据库UPDATE权限。如果旧账户不存在或者新账户已经存在,则会出现错误。
例:将用户king的名字修改为ken
rename user
‘king’ @ ‘loacalhost’ to 'ken' @ ‘loacalhost’;
完成后可以用上面的方法查看一下是否修改成功。
2.修改密码
要修改某个用户的登录密码,可以使用SET PASSWORD语句。
语法格式:
SET PASSWORD [FOR user]=PASSWORD ('newpassword')
注:如果不加FOR user,表示修改当前用户的密码。加了FOR user则是修改当前主机上的特定用户的密码,user为用户名,它的值必须以'user_name' @'host_name'的格式给定。
例:将用户ken的密码改为qen
set password for ‘ken’ @ ‘localhost’ =password(‘qen’);
权限控制
1.授予权限
新的SQL用户不允许访问其他SQL用户的表,也不能立即创建自己的表,它必须被授权。可以被授予的权限有以下几组。
(1)列权限:和表中的一个具体列相关。
(2)表权限:和一个具体表中的数据有关。
(3)数据库权限:和一个具体的数据库中的所有表相关。
(4)用户权限:和MySQL所有的数据库相关。
给某用户授予权限可以使用GRANT语句。使用SHOW GRANTS语句可以查看当前账户拥有什么权限。
GRANT 语法格式:
GRANT priv_type [(column_list)] [, priv_type [(column_list)] ]...
ON [obect_type] {tbl_name | * | * . * | db_name.*}
TO user [IDENTIFIED BY [PASSWORD] 'password' ]
[,user [IDENTIFIED BY [PASSWORD] 'password' ] ]...
[WITH with_option [with_option] ...]
其中,object_type:
TABLE
| FUNCTION
| PROCEDURE
with_option:
GRANT OPTION
| MAX_QUERIES_PRE_HOUR count
| MAX_UPDATES_PRE_HOUR count
| MAX_CONNECTIONS_PRE_HOUR count
| MAX_USER_CONNECTIONS count
注: priv_type为权限的名称,如 SELECT,UPDATE等,给不同的对象授予权限 priv_type的值也不同。TO子句用来设定用户的密码。ON字关键字后面给出的是要授予权限的数据库或表名。
SELECT:给予用户使用SELECT语句访问特定的表的权力。用户也可以在一个视图公式中包含表。然而,用户必须对视图公式中的每个表或视图都有SELECT权限。
INSERT:给予用户使用INSERT语句向一个特定表中添加行的权力。
DELETE:给予用户使用DELETE语句向一个特定表中删除行的权力。
UPDATE:给予用户使用UPDATE语句修改特定表中值的权力。
REFERENCES:给予用户使用创建一个外键来参照特定的表的权力。
CREATE:给予用户使用特定名字创建一个表的权力。
ALTER:给予用户使用ALTER TABLE语句修改表的权力。
INDEX:给予用户使用在表上定义索引的权力。
DROP:给予用户删除表的权力。
ALL或ALL PRIVILEGES:表示所有权限名。
在授予表权限时,ON关键字后面跟上tb1_name ,tb1_name为表名或视图名。