mysql-用户账号及权限管理

用户账号管理

添加用户

使用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‘;

修改用户密码

  1. 使用set修改

    语法格式:
    	SET PASSWORD FOR ‘username‘@‘hostname‘ = PASSWORD(‘newpasswd‘);
    
  2. 使用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;
    
  3. 使用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‘;

mysql-用户账号及权限管理

上一篇:MySQL 启动流程及配置管理


下一篇:C#正则表达式编程(四):正则表达式