一、DCL语言
权限级别
- Global level
所有库,所有表的权限。
- Database level
某个数据库中的所有表的权限。
- Table level
库中的某个表的权限
- Column level
表中的某个字段的权限。
mysql用户管理
1、创建用户
create user user1@'10.8.162.%' identified by 'weinihao123';
//用户@ip网段, 若为localhost 则只有本机能访问
验证:
select * from mysql.user\G;
注释:
CREATE 创建(关键字)
USER 用户(关键字)
user1 用户名称(自定义)
@ 分隔符(关键字)
‘localhost’ 允许登录的主机
IDENTIFIED BY 身份认证(关键字)
‘weinihao@123’ 用户密码
2、删除用户
drop user user1@'10.8.162.%';
3、修改用户密码
root修改自己密码
第一种:
[root@localhost ~]# mysqladmin -uroot -p'weinihao123' password 'weinihao12'
// 原密码 //新密码
第二种:
mysql> SET PASSWORD=password('weinihao123');
//新密码
mysql> rlush privileges;//刷新权限
第三种:
mysql> update mysql.user set authentication_string=password('new_password') where user='root' and host='localhost';
//使用这个命令的前提是有系统权限
丢失root用户密码
当root用户,忘记了密码。可以使用破解的方式来登录系统。修改密码。
原理:使系统在启动时,不加载密码文件。
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables
//打开/etc/my.cnf文件在【mysqld】下面写上skip-grant-tables
重启mysql服务:
systemctl restart mysqld
[root@localhost ~]# mysql -uroot //没有密码登录
mysql> update mysql.user set authentication_string=password('weinihao123') where user='root' and host='localhost'; //修改自己的密码
修改mysql启动设置,注释掉跳过密码登录。
4、登录mysql
mysql -uroot -p'weinihao123' -h'10.8.162.122'
-h 指定主机名 【默认为localhost】
-P MySQL服务器端口 【默认3306】 大P
-u 指定用户名 【默认root】
-p 指定登录密码 【默认为空密码】
此处mysql为指定登录的数据库
-e 接SQL语句
示例
免登录查询数据库
mysql -uroot -p'QianFeng@123' -hlocalhost -P 3306 mysql -e 'show tables'
mysql权限原理
授予权限:
grant 权限列表 on 库名.表名 to 用户名@'客户端主机' [identified by '密码' with option参数]; //中括号里面的是可选项
==权限列表
all: 所有权限(不包括授权权限)
select,update 查询更新
==数据库.表名
*.*
所有库下的所有表
web.*
web库下的所有表
web.stu_info
web库下的stu_info表
eg:
grant SELECT (id), INSERT (name,age) ON mydb.mytbl to 'user8'@'localhost' identified by 'weinihao@123';
==with_option参数
GRANT OPTION
授权选项
查看自己的权限
show grants \G;
查看别人的权限
show grants FOR 用户名@'%'\G;
去除权限:
revoke 权限列表 on 库名.表名 from 用户名@'客户端主机'
二、日志
1、日志分类
1 错误日志 :启动,停止,关闭失败报错。rpm安装日志位置 /var/log/mysqld.log
2 通用查询日志:所有的查询都记下来。
3 二进制日志:实现备份,增量备份。只记录改变数据,除了select都记。
4 中继日志:读取主服务器的binlog,在本地回放。保持一致。
5 slow log:慢查询日志,指导调优,定义某一个查询语句,定义超时时间,通过日志提供调优建议给开发人员。
2、Error log
vim /etc/my.cnf //进入主配置文件,观察日志是否启动
log-error=/var/log/mysqld.log //该字段,标记是否启动日志,以及日志位置。
cat /var/log/mysqld.log //如果哪天mysql服务起不来了,请来这个日志文件看看。
3、Binary log
默认是没有开启的,二进制文件
① 启动二进制文件
vim /etc/my.cnf
log_bin
//添加该字段。指启动二进制日志
server-id=2
//群集问题,必须指定该主机的序号。数字随意
systemctl restart mysqld
重启数据库
② 查看二进制日志文件当前状态
ls /var/lib/mysql/*bin*
//查询二进制文件生成完成。
mysqlbinlog -v /var/lib/mysql/localhost-bin.000001
//查看二进制文件日志。后续讲解
# at 123
//找到一个记录位置
4、Slow Query Log
默认慢查询日志未开启
开启慢查询日志功能
vim /etc/my.cnf
// 加入下面2行配置
slow_query_log=1
//启动慢查询日志
//这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。
long_query_time=3
//当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。
systemctl restart mysqld
//重启服务器
验证慢查询日志
#tail /var/lib/mysql/localhost-slow.log
观察长查询日志记录,记录了刚才超长的查询结果。