MySQL用户管理(5.7.20-winx64)

一、添加用户

1.直接在MYSQL.USER表插入记录

mysql> use mysql;
Database changed

mysql> INSERT INTO user(host, user, authentication_string, select_priv, create_priv,index_priv) VALUES ('localhost', 'user', PASSWORD('user'), 'Y', 'Y', 'Y');

mysql> FLUSH PRIVILEGES;

注意1:在MySQL5.7之前,存储密码的字段不是authentication_string而叫password
注意2PASSWORD() 函数是加密函数,明文密码会被加密后存放进user表。
注意3FLUSH PRIVILEGES用于重新载入授权表,否则需要重启mysql服务修改才会生效。

实际上,采用这种方式新建用户会报错:

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value

字面上理解是一个叫ssl_cipher的字段不能为null,但是没有插入值也没有默认值。
实际上在5.1版本后官方就禁止了这种创建用户的方式,在配置文件my.ini中被默认指定为严格模式。
解决方案是在配置文件中添加一条:

sql_mode=NO_ENGINE_SUBSTITUTION

不过既然官方禁止这样的方式,不建议使用此方法创建新用户。

2.使用CREATE USER命令

CREATE USER 'username'@'host' IDENTIFIED BY 'PASSWORD' ;

或者不要引号,像这样:

CREATE USER username@host IDENTIFIED BY 'PASSWORD' ;

也可以没有IDENTIFIED BY 'password'部分,这样的话会生成无密码的账户。
注意:这样生成的账户只能连接数据库,无任何操作权限,需要后续的的GRANT命令来授权。

3.使用GRANT命令

当数据库存在用户时GRANT命令会对该用户进行授权,但当数据库不存在该用户时就会创建该用户并授权。
换句话说,上面的CREATE USER命令有点多余-。-

mysql> GRANT ALL|priv1,priv2,.....privn ON database.table to 'username'@'host' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;

说明:priv代表权限,权限有如下几项:

  • select
  • insert
  • update
  • delete
  • create
  • drop
  • index
  • alter
  • grant
  • references
  • reload
  • shutdown
  • process
  • file

二、修改用户

1.修改用户名

UPDATE mysql.user SET user='user_rua' WHERE user='user';

RENAME USER 'user_rua'@'10.40.20.%' TO 'user'@'%';

注意:%是通配符,表示所有地址均可访问,也可限定网段,如10.40.20.%。这里RENAME的同时,也修改了user表里的host,允许访问的网络地址也随即变了。

2.修改密码

UPDATE mysql.user SET authentication_string=PASSWORD('user') WHERE user='user';

SET PASSWORD FOR 'user'@'%'=PASSWORD('123456');

修改当前登录账户的密码可以更简单:

SET PASSWORD=PASSWORD('new_password');

另外,在命令提示符界面也可以直接修改密码:

mysqladmin -u root -p password 123456

123456为新密码,打入此命令后需要输入原密码。正确输入后密码会被修改。

3.收回权限

REVOKE ALL|priv1,priv2,.....privn ON *.* FROM 'username'@'host'; 

赋予权限见上面的GRANTS部分。

三、删除用户

DROP USER 'username'@'host';

DELETE FROM mysql.user WHERE user='user' AND host='localhost';

另、补充项

查看权限

查看当前登录用户的权限可以直接:

SHOW GRANTS;

或者查看其他用户的权限

SHOW GRANTS FOR 'username'@'host';

查看当前用户

SELECT USER();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值