mysql用户权限基础介绍

一).用户创建

通过create user语句创建用户
在执行CREATE USER或CRANT语句后,MySQL服务器会修改相应的用户权限表,添加或修改用户及权限。

create user ‘aaa’@‘HOST’ identified by ‘123’;
HOST的形式:1. IP地址,如1.1.1.1;2. 主机名,如localhost;3. 网络地址,如172.16.0.04. 通配符,如%:匹配任意字符_:匹配任意单个字符如1.1.1…_(允许1.1.1.1-1.1.1.9)

通过grant语句创建新用户
GRANT语句是添加新用户并授权它们访问MySQL对象的首选方法,其语法格式为:

grant all on DB_NAME.TABLE_NAME to ‘USERNAME’@‘HOST’ identified by ‘PASSWORD’;
HOST的表现形式和create user一样

  1. 创建root用户

mysql> GRANT ALL PRIVILEGES ON . TO ‘root’@‘localhost’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;
mysql> flush privileges;

2). 创建一个基本的增删改查用户
mysql> GRANT UPDATE, DELETE, INSERT, SELECT ON . TO ‘test’@’%’ identified by ‘test’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
mysql> flush privileges;
# MAX_QUERIES_PER_HOUR,MAX_CONNECTIONS_PER_HOUR,MAX_UPDATES_PER_HOUR设置为0表示不限制

3). 创建数据库基本的增删改查用户

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, SHOW VIEW, EXECUTE ON db_name.* TO ‘test’@’%’ identified by ‘test’;
mysql> flush privileges;

4). 授予数据库名以db开头的数据库的权限

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, SHOW VIEW, EXECUTE ON db%.* TO ‘bbb’@’%’;
mysql> flush privileges;

5). 创建备份用户权限

mysql> GRANT SELECT,EVENT,SHOW DATABASES,LOCK TABLES,SUPER,REPLICATION CLIENT ON . TO ‘backup’@‘localhost’ identified by ‘backup’;
mysql> flush privileges;

6). 备份恢复用户权限

mysql> GRANT INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON . TO ‘restore’@‘localhost’ identified by ‘123456’;
mysql> flush privileges;

7). 复制用户权限

mysql> GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘repl’@’%’ IDENTIFIED BY ‘123456’;
mysql> flush privileges;

2.用户删除

mysql> drop user ‘USERNAME’@‘HOST’;
# 删除MySQL默认的无用账户;
mysql> drop user ‘root’@‘localhost.localdomain’;

# 删除MySQL默认的无用账户;
mysql> drop user ‘root’@‘127.0.0.1’;

  1. 更改用户名

mysql> rename user OLD_NAME to NEW_NAME;

  1. 修改用户密码

通过mysqladmin工具
****# 给root@localhost用户登录mysql设置密码为"redhat";
$ mysqladmin -u root -h localhost password “redhat”

****# 修改root@localhost用户登录mysql数据库的密码;
$ mysqladmin -u root -h localhost password “new passwd” -p “old passwd”
通过直接修改mysql.user表的用户记录
# MySQL 5.6
mysql> update mysql.user set password=PASSWORD(‘redhat’) where user=‘root’;
mysql> flush privileges;
# MySQL 5.7
mysql> update mysql.user set authentication_string=PASSWORD(‘redhat’) where user=‘root’;
mysql> flush privileges;

set password语句
mysql> set password for ‘root’@‘localhost’=PASSWORD(‘redhat’);
mysql> flush privileges;

ALTER USER语句(MYSQL5.7版本)
mysql> use mysql
mysql> alter user root@‘localhost’ identified by ‘123456’;
mysql> flush privileges;

给root用户登录mysql设置密码为helloWORD并以加密方式

mysql> use mysql;
# MySQL5.6
mysql> update user set password=PASSWORD(‘helloWORD’) where user=‘root’;
# MySQL5.7
mysql> update mysql.user set authentication_string=PASSWORD(‘helloWORD’) where user=‘root’;
mysql> flush privileges;

二)MySQL用户权限表mysql.user,mysql,db,mysql.tables_priv,mysql.columns_priv,mysql.procs_priv
全局层级:全局权限适用于一个给定MySQL Server中的所有数据库,这些权限存储在mysql.user表中。
GRANT ALL ON . TO ‘user’@‘host’; # . 表示数据库库的所有库和表,对应权限存储在mysql.user表中

数据库层级:数据库权限适用于一个给定数据库中的所有目标,这些权限存储在mysql.db表中。
GRANT ALL ON mydb.* TO ‘user’@‘host’; #mydb.* 表示mysql数据库下的所有表,对应权限存储在mysql

表层级:表权限适用于一个给定表中的所有列,这些权限存储在mysql.tables_priv表中。
GRANT ALL ON mydb.mytable TO ‘user’@‘host’; #mydb.mytable 表示mysql数据库下的mytable表,对应权

列层级:列权限使用于一个给定表中的单一列,这些权限存储在mysql.columns_priv表中。
GRANT ALL (col1, col2, col3) ON mydb.mytable TO ‘user’@‘host’; #mydb.mytable 表示mysql数据库下的mytab

子程序层级:CREATE ROUTINE、ALTER ROUTINE、EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予子程序层级,并存储在mysql.procs_priv表中。
GRANT EXECUTE ON PROCEDURE mydb.myproc TO ‘user’@‘host’; #mydb.mytable 表示mysql数据库下的mytable表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值