创建新的普通用户
新建用户
1.使用CREATE USER 语句创建普通用户,可以同时创建多个用户。
格式:CREATE USER username [IDENTIFIED BY 'password'],username2 [IDENTIFIED BY 'password'],...;
参数说明:
username 为创建的用户名字由用户名和主机名共同构成
IDENTIFIED BY 为可省字段,为创建的用户设置密码
例如,创建一个普通用户test,代码如下:
mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY '1234';Query OK, 0 rows affected (0.00 sec)
2.使用INSERT语句新建普通用户
语法格式:INSERT INTO mysql.user (Host,User,Password) VALUES('Hostname','Username',PASSWORD('password'));
通常来说,向user表中添加这三个字段后,一个新的普通用用户已经创建完成了,但是真正执行上面的语句时报以下错误:
mysql> INSERT INTO mysql.user (Host,User,Password) VALUES('test3','localhost',PASSWORD('1234'));ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value
错误提示,user表中的‘ssl_cipher’没有设置默认值,用DESC 查询一下USER 的表结构,发现ssl_cipher、x509_issuer、x509_subject这三个字段默认值为NULL,因此需要为这3个字段设置默认值。因此,通过INSERT 语句新建一个普通用户的正确格式如下:
INSERT INTO mysql.user (Host,User,Password,ssl_cipher,x509_issuer,x509_subject)
VALUES('hostname','username',PASSWORD('password'),'','','');
创建一个test4的普通用户,代码如下:
mysql> INSERT INTO user (Host,User,Password,ssl_cipher,x509_issuer,x509_subject) -> VALUES('localhost','test4',PASSWORD('1234'),'','','');Query OK, 1 row affected (0.01 sec)
3.使用GRANT创建新的普通用户
语法格式:GRANT priv_type ON database.table TO user [IDENTIFIED BY 'password'][,user IDENTIFIED BY 'password']...
参数说明:
priv_type :表示新创建用户的权限,如INSERT/SELECT/DELETE/UPDATE等
database.table:表示新用户的权限范围,在指定数据库和表中使用自己的权限
user:表示新用户的账户,由用户名和主机名共同决定
IDENTIFIED BY 用来设置用户密码
例:使用GRANT语句创建用户名为test5的普通用户,代码如下:
mysql> GRANT SELECT ON *.* TO 'test5'@'localhost' IDENTIFIED BY '1234';Query OK, 0 rows affected (0.00 sec)
删除普通用户
1.使用DROP USER语句删除普通用户
语法格式:DROP USER user[,user]...
例如:删除数据库中的用户test2和test3,代码如下:
mysql> DROP USER 'test2'@'localhost','test3'@'localhost';Query OK, 0 rows affected (0.00 sec)
2.使用DELETE语句删除用户
语法格式:
DELETE FROM mysql.user WHERE Host='hostname'AND User='username';
例如,使用DELETE语句删除数据库中的test4用户,代码如下:
mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='test4';Query OK, 1 row affected (0.01 sec)mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)
注意:执行完DELETE语句后,要使用FLUSH PRIVILEGES使用户生效。