mysql数据库用户、权限常用命令

By | 2023年6月13日

1 创建数据库

create database base_proj;

CREATE database `trial` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin ;

2 创建用户

创建用户

CREATE USER 'usename'@'%' IDENTIFIED BY 'use_pwd';

3 授权

GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'%' identified by 'use_pwd'; 

3.1 授权数据权限

GRANT select, insert, update, delete ON `trial`.* TO 'trial2'@'%';

3.2 授权表结构修改权限

GRANT create, alter, drop, references, create temporary tables, create view,show view, index, create routine, alter routine, execute ON `trial`.* TO 'trial2'@'%';
  • create 创建表的权限
  • alter 修改表的权限
  • drop 删除表的权限
  • references 操作外键的权限
  • create temporary tables 创建临时表的权限
  • create view 创建视图的权限
  • show view 查看视图的权限
  • index 操作索引的权限
  • create routine 创建存储过程的权限
  • alter routine 修改存储过程的权限
  • execute 执行存储过程的权限

3.3 授权全局权限(flush)

mysql除了有针对数据库的授权外,还有一些命令是数据库无关的全局权限,因此须使用on . 来进行:

grant reload on *.* to 'test'@'localhost';
  • CREATE USER
  • PROCESS
  • RELOAD 对应flush privileges命令
  • REPLICATION
  • CLIENT
  • REPLICATION SLAVE
  • SHOW DATABASES
  • SHUTDOWN
  • SUPER

更新权限

flush privileges;

4. 授予用户有grant权限

可以通过下面语句

grant grant option on test.t_area to 'ut01'@'%';

也可以用如下方式

grant all privileges on test.t_area to 'ut01'@'%' with grant option;

查看授权信息

show grants for 你的用户;

取消授权

revoke all on *.* from dba\@localhost;

修改密码

set password for 'label'@'localhost'= 'label123';

授权信息存储位置

mysql.tables_priv

可以在这个表里做操作,然后flush privileges 进行生效

授权含义

我们平时都知道通过授权user@'%'来允许所有的访问,其实代表的含义是允许所有的ip来访问;但是有时候,比如localhost 就不会解析为ip,所有%也就不适用。

当在msyql服务器上的/etc/hosts中配置了ip解析的话,就会用主机名去连接mysql,这时候还需要对该主机进行授权,比如
10.1.245.214 devpay1\
那么这个214上的应用在访问mysql的时候就会被解析成devpay1,所以除了%和localhsot外还需要对devpay1赋权限

++有可能是由mysql的ip反向解析引起的++


  • 例子
CREATE USER 'trial_kn_dba'@'%' IDENTIFIED BY 'StSF82+Q';
CREATE USER 'trial_kn_dba'@'localhost' IDENTIFIED BY 'StSF82+Q';

GRANT ALL PRIVILEGES ON trial_kn.* TO 'trial_kn_dba'@'%' with grant option;
GRANT ALL PRIVILEGES ON trial_kn.* TO 'trial_kn_dba'@'localhost' with grant option;

flush privileges;