四、MySQL权限操作

用户管理

定义用户

#格式
用户名@'白名单'

#示例
wordpress@'10.0.0.%'    #允许来自10.0.0.0网段的wordpress数据库用户登录
wordpress@'%' #允许来自所有网段
wordpress@'10.0.0.200' #仅允许10.0.0.200地址登录
wordpress@'localhost'  #仅允许本地登录
wordpress@'db02'  #仅允许主机名db02登录
wordpress@'10.0.0.5%' #仅允许10.0.0.50-59登录
wordpress@'10.0.0.0/255.255.254.0'

案例
增删改查

#增加一个用户
mysql> create user tz@'10.154.0.%' identified by '123';

#查询一个用户
mysql> desc mysql.user;    #得到authentication_string字段,此字段记录密码。
mysql> select user ,host ,authentication_string from mysql.user

#更改用户密码
mysql> alter user tz@'10.154.0.%' identified by '456';

#删除一个用户
mysql> drop user tz@'10.154.0.%';

权限操作

授权用户需要注意

  1. 是否有邮件批复
  2. 对哪个数据库以及表进行操作
  3. 执行什么操作
  4. 从哪个IP登录
  5. 密码强度要求
    如果开发人员索要root密码,提示他需要走流程。

常用权限

ALL:
SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE,
 REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, 
 LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, 
 SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, 
 CREATE TABLESPACE
 
ALL : 以上所有权限,是普通管理员拥有的
with grant option:超级管理员才具备的,拥有给别的用户授权的功能

权限范围

*.*              #管理员用户,能操作所有数据库跟表
wordpress.*      #开发和应用用户,只能操作wordpress数据库下的所有表
wordpress.t1     #开发和应用用户,只能操作wordpress数据库下的t1表

授权命令

#创建管理员用户
mysql> grant all on *.* to root@'10.154.0.%' identified by '123';

#创建应用用户,用户名为app,只能对app数据库进行增删改查
mysql> grant select ,update,insert,delete on app.* to app@'10.154.0.%' identified by '123';

#查看权限
mysql> show grants for app@'10.154.0.%';

#回收删除授权
mysql> revoke  delete on app.*  from app@'10.154.0.%';

#添加with grant option能让tz666用户将自己拥有的权限授权给别人
mysql> grant all privileges on testdb.* to tz666@'localhost' identified by '123' with grant option;

#查看tz666拥有的权限
mysql> show grants for tz666@'localhost';

#回收授权权限
mysql> revoke grant option on *.* from 'tz666'@'localhost';

8.0以后版本的差别

#8.0以后的版本先创建用户,再给用户授权
mysql> create user tz@'10.154.0.%' identified by '123';
mysql> grant all privileges on *.* to 'tz'@'10.154.0.%' identified by '123';

#8.0以前的版本可以边创建用户边授权
mysql> grant all on mysql.* to tz@'%' identified by '123';

参考资料: mysql8.0版本添加用户跟权限

mysql常用参数

-u                   用户
-p                   密码
-h                   IP
-P                   端口
-S                   socket文件
-e                   免交互执行命令
<                    导入SQL脚本


mysql> select @@socket;
+-----------------+
| @@socket        |
+-----------------+
| /tmp/mysql.sock |

$ mysql -uroot -p -S /tmp/mysql.sock

$ mysql -uroot -p -e "select user,host from mysql.user;"
Enter password:
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| abc          | 10.0.0.%  |
| app          | 10.0.0.%  |
| root          | 10.0.0.%  |
| mysql.session | localhost |
| mysql.sys    | localhost |
| root          | localhost |
+---------------+-----------+

$ mysql -uroot -p <world.sql

三种启动方式


mysqld启动:/usr/local/mysql/bin/mysqld 即可启动mysql。

mysqld_safe 启动:这是启动脚本,在mysqld上再封装了一个监控程序,当mysqld挂了的时候,可以帮忙重启,并记录日志。一般用于维护性的任务,后面可跟需要添加的参数。

#启动
mysql> mysqld_safe --defaults-file=my.cnf > mysqld.log 2>&1 &

#关闭
mysql> mysqladmin -uroot -p shutdown

参考资料: mysqld_safe启停

mysql.server:这也是启动脚本,调用mysqld_safe启动,启动mysql.server start

配置文件

查看/etc/my.cnf配置文件

$ cat /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql-5.7.26
datadir=/usr/local/mysql-5.7.26/data
socket=/tmp/mysql.sock
#服务器id号,用于主从复制,取值范围1-65535
server_id=6
port=3306
#客户端配置
[mysql]
socket=/tmp/mysql.sock

配置文件读取顺序

$ mysqld --help --verbose |grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

注:
默认情况下,MySQL启动时,会依次读取以上配置文件,如果有重复选项,会以最后一个文件设置的为准。
但是,如果启动时加入了--defaults-file=/etc/my.cnf时,就只会读取my.cnf配置文件.

学习来自:郭老师博客,老男孩深标DBA课程 第二章

posted @ 2021-01-21 17:24  努力吧阿团  阅读(95)  评论(0编辑  收藏  举报