用户账号管理
添加用户
使用create创建用户
语法格式:
CREATE USER <用户> [ IDENTIFIED BY [ PASSWORD ] ‘password‘ ] [ ,用户 [ IDENTIFIED BY [ PASSWORD ] ‘password‘ ]]
例:
1.CREATE USER ‘username‘@‘localhost‘ IDENTIFIED BY ‘passwd‘;
使用insert新建用户
语法格式:
INSERT INTO mysql.user(Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES (‘hostname‘, ‘username‘, PASSWORD(‘password‘), ‘‘, ‘‘, ‘‘);
例:
1.INSERT INTO mysql.user(Host,User,authentication_string,ssl_cipher,x509_issuer,x509_subject) VALUES (‘localhost‘,‘test‘,PASSWORD(‘passwd‘),‘‘,‘‘,‘‘);
2.FLUSH PRIVILEGES;
使用GRANT新建用户
语法格式:
GRANT priv_type ON database.table TO user [IDENTIFIED BY [PASSWORD] ‘password‘]
priv_type 参数表示新用户的权限;
database.table 参数表示新用户的权限范围,即只能在指定的数据库和表上使用自己的权限;
user 参数指定新用户的账号,由用户名和主机名构成;
IDENTIFIED BY 关键字用来设置密码;
password 参数表示新用户的密码。
例:
1.GRANT SELECT ON *.* TO ‘test‘@localhost IDENTIFIED BY ‘passwd‘;
修改用户
修改用户名
语法格式:
RENAME USER <旧用户> TO <新用户>
<旧用户>:系统中已经存在的 MySQL 用户账号。
<新用户>:新的 MySQL 用户账号。
RENAME USER 语句用于对原有的 MySQL 用户进行重命名。
若系统中旧账户不存在或者新账户已存在,该语句执行时会出现错误。
使用 RENAME USER 语句,必须拥有 mysql 数据库的 UPDATE 权限或全局 CREATE USER 权限。
例:
RENAME USER ‘test1‘@‘localhost‘ TO ‘test02‘@‘localhost‘;
修改用户密码
-
使用set修改
语法格式: SET PASSWORD FOR ‘username‘@‘hostname‘ = PASSWORD(‘newpasswd‘);
-
使用UPDATE修改
语法格式: UPDATE mysql.user SET authentication_string = PASSWORD(‘newpasswd‘) WHERE User=‘username‘ AND Host=‘hostname‘;FLUSH PRIVILEGES; 例: mysql>UPDATE mysql.user SET authentication_string = PASSWORD(‘newpasswd‘) WHERE User=‘test‘ AND Host=‘localhost‘; mysql>FlUSH PRIVILEGES;
-
使用GRANT修改
语法格式: GRANT USAGE ON *.* TO ‘user‘@‘hostname‘ IDENTIFIED BY ‘newpasswd‘; 例: GRANT USAGE ON *.* TO ‘test‘@‘localhost‘ IDENTIFIED BY ‘newpasswd‘;
删除用户
使用DROP删除用户
语法格式:
DROP USER ‘username‘@‘host‘[,user@host]...
注意:用户的删除不会影响他们之前所创建的表、索引或其他数据库对象,MySQL不会记录是谁创建了这些对象
例:
DROP USER ‘test1‘@‘localhost‘;
使用DELETE删除用户
语法格式:
DELETE FROM mysql.user WHERE Host=‘hostname‘ AND User=‘username‘;
例:
DELETE FROM mysql.user WHERE Host=‘localhost‘ AND User=‘test1‘;
查看用户权限
使用SELECT查询
语法格式:
SELETE * FROM ‘username‘@‘hostname‘;
注意:
1.新建用户只有登录权限,没有任何其它权限,不能查询user表
使用SHOW GRANTS FOR查询
SHOW GRANTS FOR ‘username‘@‘host‘; #查看指定用户的权限
SHOW GRANTS FOR CURRENT_USER; #查看当前用户的权限
用户权限管理
赋予权限
语法格式:
GRANT priv_type [(column_list)] ON database.table TO user [IDENTIFIED BY [PASSWORD] ‘password‘]
[, user[IDENTIFIED BY [PASSWORD] ‘password‘]] ...
[WITH with_option [with_option]...]
priv_type 参数表示权限类型;
columns_list 参数表示权限作用于哪些列上,省略该参数时,表示作用于整个表;
database.table 用于指定权限的级别;
user 参数表示用户账户,由用户名和主机名构成,格式是“‘username‘@‘hostname‘”;
IDENTIFIED BY 参数用来为用户设置密码;
password 参数是用户的新密码。
WITH 关键字后面带有一个或多个 with_option 参数。这个参数有 5 个选项,详细介绍如下:
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 个连接。
1.授予数据库权限时,<权限类型>可以指定为以下值
SELECT Select_priv 表示授予用户可以使用 SELECT 语句访问特定数据库中所有表和视图的权限。
INSERT Insert_priv 表示授予用户可以使用 INSERT 语句向特定数据库中所有表添加数据行的权限。
DELETE Delete_priv 表示授予用户可以使用 DELETE 语句删除特定数据库中所有表的数据行的权限。
UPDATE Update_priv 表示授予用户可以使用 UPDATE 语句更新特定数据库中所有数据表的值的权限。
REFERENCES References_priv 表示授予用户可以创建指向特定的数据库中的表外键的权限。
CREATE Create_priv 表示授权用户可以使用 CREATE TABLE 语句在特定数据库中创建新表的权限。
ALTER Alter_priv 表示授予用户可以使用 ALTER TABLE 语句修改特定数据库中所有数据表的权限。
SHOW VIEW Show_view_priv 表示授予用户可以查看特定数据库中已有视图的视图定义的权限。
CREATE ROUTINE Create_routine_priv 表示授予用户可以为特定的数据库创建存储过程和存储函数的权限。
ALTER ROUTINE Alter_routine_priv 表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限。
INDEX Index_priv 表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限。
DROP Drop_priv 表示授予用户可以删除特定数据库中所有表和视图的权限。
CREATE TEMPORARY TABLES Create_tmp_table_priv 表示授予用户可以在特定数据库中创建临时表的权限。
CREATE VIEW Create_view_priv 表示授予用户可以在特定数据库中创建新的视图的权限。
EXECUTE ROUTINE Execute_priv 表示授予用户可以调用特定数据库的存储过程和存储函数的权限。
LOCK TABLES Lock_tables_priv 表示授予用户可以锁定特定数据库的已有数据表的权限。
ALL 或 ALL PRIVILEGES 或 SUPER Super_priv 表示以上所有权限/超级权限
2.授予表权限时,<权限类型>可以指定为以下值
SELECT Select_priv 授予用户可以使用 SELECT 语句进行访问特定表的权限
INSERT Insert_priv 授予用户可以使用 INSERT 语句向一个特定表中添加数据行的权限
DELETE Delete_priv 授予用户可以使用 DELETE 语句从一个特定表中删除数据行的权限
DROP Drop_priv 授予用户可以删除数据表的权限
UPDATE Update_priv 授予用户可以使用 UPDATE 语句更新特定数据表的权限
ALTER Alter_priv 授予用户可以使用 ALTER TABLE 语句修改数据表的权限
REFERENCES References_priv 授予用户可以创建一个外键来参照特定数据表的权限
CREATE Create_priv 授予用户可以使用特定的名字创建一个数据表的权限
INDEX Index_priv 授予用户可以在表上定义索引的权限
ALL 或 ALL PRIVILEGES 或 SUPER Super_priv 所有的权限名
例:
1. GRANT SELECT,INSERT ON *.* TO ‘test‘@‘localhost‘ IDENTIFIED BY ‘passwd‘ WITH GRANT OPTION;
回收权限
回收用户的某些特定权限
语法格式:
REVOKE priv_type [(column_list)]... ON database.table FROM user [, user]...
priv_type 参数表示权限的类型;
column_list 参数表示权限作用于哪些列上,没有该参数时作用于整个表上;
user 参数由用户名和主机名构成,格式为“username‘@‘hostname‘”。
例:
REVOKE SELECT,DROP ON *.* FROM ‘test‘@‘localhost‘;
回收特定用户的所有权限
语法格式:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
REVOKE 语法和 GRANT 语句的语法格式相似,但具有相反的效果
要使用 REVOKE 语句,必须拥有 MySQL 数据库的全局 CREATE USER 权限或 UPDATE 权限
例:
REVOKE ALL PRIVILEGES,GRANT OPTION FROM ‘test‘@‘localhost‘;