首页 > 技术文章 > MySQL之用户管理

plf-Jack 2019-07-17 16:16 原文

用户管理

主要为了控制权限,让不同开发者,仅能操作属于自己的业务范围内的数据

创建mysql账户

账户中涉及的三个数据

  1. 账户名、密码、ip地址
    • ip是用于限制某个账户只能在哪个机器上登录
------------------------第一种方式---------------------------
# 创建user语法:
create user 用户名@客户端主机地址或网段  identified by 密码
例如:
create user "plf"@"localhost" identified by "123456";
查看创建用户
select user,password,host from mysql.user;

mysql.user表	与用户相关信息
mysql.db表	用户的数据库权限信息
mysql.tables_priv表	用户的表权限
columns_priv 表	用户的字段权限

# 授权用户语法:
grant [权限1,...权限n|all] on *.* to 用户名@客户端主机地址或网段;
例如:
grant all on *.*  to  "plf"@localhost; 
刷新权限
flush privileges;

------------------------第二种方式---------------------------
grant [权限1,...权限n|all] on *.* to 用户名@主机地址 identified by 密码;
刷新权限
flush privileges;






# 测试
都在root权限下查看
create database day42 charset utf8;
use day42;
create table day42.a(id int); 
grant all on day42.* to lt@localhost identified by "123456";
flush privileges;
select user,password,host from mysql.user;
select user,host from mysql.db;
select user,host from mysql.tables_priv;
select user,host from mysql.columns_priv;



# 收回权限
----------------------第1种方式:直接删除用户---------------------
drop user 用户名@主机

----------------------第2种方式:回收权限---------------------
revoke all on *.*  from 用户名@主机名;

# 问题?
如果授权了一个all权限的用户A,然后利用A去创建一个新用户并授权all,能够行的通?
答案是行不通的。
可以通过root用户的如下sql,创建A用户。然后A用户就可以创建其他用户了
grant all on day42.* to lt@localhost identified by "123456" with grant option;

推荐阅读