Write the Code. Change the World.

4月 06

mysql 设置 root 用户密码以及禁用远程登录 root 用户后,需要设置一些其他账户密码使用。

mysql 常见的用户密码权限类型:

  1. 本地用户访问。
  2. 外网用户任意ip访问。
  3. 外网特定ip访问。
  4. 指定访问数据库。
  5. 指定数据库表的增删改查权限。

创建用户

创建本地用户

create user shenqi@localhost identified by '33441314';  

# 这样就会在 mysql 库的 user 表中,就插入了一条用户数据。退出 root 用户,使用该账户就可以登录进来了。但进来只有一个数据库 information_schema  。因此需要给用户分配数据库权限以及刷新权限。

https://www.jianshu.com/p/5903e8c002ed

创建外网访问的用户

create user shenqi@'%' identified by '33441314';  

设置本地服务器对数据库的全部权限

grant all privileges on dbname.* to shenqi@localhost;

设置外网服务器对数据库的全部权限

grant all privileges on dbname.* to shenqi@'%';

如果想要指定的外网ip 才可以访问,可以将 % 改成允许访问的 ip,也就是外网其他 ip 是不可以访问的。

设置用户访问所有的数据库

grant all on *.* to 'shenqi'@'%';

使得更改生效

flush privileges;

例子:

create user feipool@'%' identified by '_Sq123456';  

grant all on feipool.* to feipool@'%';

ALTER USER feipool@'%' IDENTIFIED WITH mysql_native_password BY '_Sq123456';

flush privileges;

其他操作

# 删除用户
drop user 'shenqi';

# 修改用户账号名
rename user 'shenqi' to 'vini';

# 修改用户密码
alter user 'shenqi'@'%' identified by '98589958';

# 显示某个用户的权限
show grants for shenqi;

# 设置单独的权限
grant EXECUTE,INSERT,SELECT,UPDATE, DELETE on dbname.* to shenqi@'%';

# execute  执行存储过程的权限
# insert 插入
# select 查询
# update 修改
# delete 删除
# dbname.* 是所有的表的权限,也可以具体某个表

# 权限回收
revoke update on dbname.* from shenqi;

# revoke取消的意思,后面跟权限,多个权限的时候使用逗号隔开,on 后面跟对象,from 后面跟用户,前面赋权的时候跟to,现在取消使用from,不要搞错了,全部权限的话可以使用all

测试

create database shenqi

grant all on shenqi.* to 'shenqi'@'%';

flush privileges;

# shenqi 用户登录, 看看 database;
show databases;

还可以建立角色,设置角色权限,将用户和角色绑定在一起就可以。这种在数据库账号多的情况下实在好用。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注