创建用户

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

说明: username:你将创建的用户名

host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%

password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

指定IP段可以访问 CREATE USER 'shu'@'172.18.0.%' IDENTIFIED BY '123456';

例子:

CREATE USER 'shu'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'xiao'@'223.15.236.120' IDENTIFIED BY '123456';
CREATE USER 'yuan'@'%' IDENTIFIED BY '123456';
CREATE USER 'shuang'@'%' IDENTIFIED BY '';
CREATE USER 'test'@'%';

# 刷新权限
flush privileges;    //刷新权限

授权

8.0+

# 赋予权限,按照5.7的写法会报错,以下为 8.0 的写法
grant all on *.* to `shuxiaoyuan_uat`@`106.15.238.9` with grant option;

# 8.0 要先创建用户,然后再给用户添加权限
CREATE USER 'php80_docker'@'172.18.0.6' IDENTIFIED BY 'Shuxiaoyuan@666';
grant all privileges on *.* to 'php80_docker'@'172.18.0.6';


# 删除权限
REVOKE all privileges ON databasename.tablename FROM 'username'@'host';

# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

8.0 以下

GRANT privileges ON databasename.tablename TO 'username'@'host';

说明: privileges:用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL

databasename:数据库名

tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示, 如.*.

username:需要分配的用户

host:指定用户登录的主机

例子:

GRANT SELECT, INSERT ON test.user TO 'pig'@'%';

# 所有数据库的所有权限,在任意主机上
GRANT ALL ON *.* TO 'pig'@'%';

# social数据库的所有权限,在任意主机上
GRANT all ON social.* TO 'pig'@'%';

# 注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

# 刷新权限
flush privileges;    //刷新权限

设置与更改用户密码

8.0+ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

8.0以下 SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是当前登陆用户用 SET PASSWORD = PASSWORD("newpassword");

撤销用户权限

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

说明: privilege databasename tablename - 同授权部分.

例子: REVOKE SELECT ON *.* FROM 'pig'@'%';

注意: 假如你在给用户'pig'@'%'授权的时候是这样的(或类似的): GRANT SELECT ON test.user TO 'pig'@'%';, 则在使用 REVOKE SELECT ON *.* FROM 'pig'@'%'; 命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是 GRANT SELECT ON *.* TO 'pig'@'%';REVOKE SELECT ON test.user FROM 'pig'@'%'; 命令也不能撤销该用户对test数据库中user表的Select 权限.

具体信息可以用命令 SHOW GRANTS FOR 'pig'@'%'; 查看

删除用户

DROP USER 'username'@'host';

如果发现双击打开某张表的时候很慢,至少要3秒。

原因是:当远程访问mysql时, mysql会解析域名, 所以会导致访问速度很慢, 会有2,3秒延时!

解决办法:修改mysql安装目录下的my.ini,加上下面这个配置可解决此问题。在[mysqld]下加入:skip-name-resolve

保存退出后重启mysql服务。

然后访问速度就和本地一样快啦。

8.0 有些东西写法不一样

# 报错一:修改密码,添加权限等,报错如下
ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation

解决:grant system_user on *.* to 'root'@'127.0.0.1';

附表:MySQL中的操作权限

还没百度,稍后加上