创建新的普通用户

新建用户 

  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使用户生效。