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;