用户管理
定义用户
#格式
用户名@'白名单'
#示例
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.%';
权限操作
授权用户需要注意
- 是否有邮件批复
- 对哪个数据库以及表进行操作
- 执行什么操作
- 从哪个IP登录
- 密码强度要求
如果开发人员索要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课程 第二章