mysql数据库实战系列--坑不下去(1)

DCL

权限级别

​ 1. Global level
​ 所有库,所有表的权限。
​ 2. Database level
​ 某个数据库中的所有表的权限。
​ 3 .Table level
​ 库中的某个表的权限
​ 4. Column level
​ 表中的某个字段,的权限。

mysql用户管理

1. 创建用户

​ 示例
​ CREATE USER user1@‘localhost’ IDENTIFIED BY ‘QianFeng@123456’;
​ 验证
​ select * from mysql.user\G;
​ 注释
​ CREATE 创建(关键字)
​ USER 用户(关键字)
​ user1 用户名称(自定义)
​ @ 分隔符(关键字)
​ ‘localhost’ 允许登录的主机
​ IDENTIFIED BY 身份认证(关键字)
​ ‘QianFeng@123456’ 用户密码

2. 删除用户

​ 示例
​ DROP USER ‘user1’@‘localhost’;
​ 操作示例
​ select * from mysql.user\G;
​ drop user ‘user1’@‘localhost’;
​ select * from mysql.user\G;
​ 或者select user from mysql.user;

3. 修改用户密码

​ root修改自己密码
​ 示例
​ # mysqladmin -uroot -p’123’ password ‘new_password’
​ 前提是拥有系统权限
​ update也可以哦。不过比较复杂
​ UPDATE mysql.user SET authentication_string=password(‘new_password’) WHERE user=’root’ AND host=’localhost’;
​ FLUSH PRIVILEGES;
​ 123为旧密码
​ 示例2
​ SET PASSWORD=password(‘new_password’);
​ FLUSH PRIVILEGES;
​ 刷新权限
​ 丢失root用户密码
​ 1.前言
​ 当root用户,忘记了密码。可以使用破解的方式来登录系统。修改密码。
​ 原理:使系统在启动时,不加载密码文件。
​ 2.修改mysql启动设置
​ # vim /etc/my.cnf
​ [mysqld]
​ skip-grant-tables
​ 3.重启mysql,无密码登录
​ 重启mysql程序
​ # systemctl restart mysqld
​ 无密码登录
​ # mysql -uroot
​ 修改自己的密码
​ mysql>UPDATE mysql.user SET authentication_string=password(‘QianFeng@123456789’) where user=‘root’ and host=‘localhost’;
​ mysql> FLUSH PRIVILEGES;
​ 4.修改mysql启动设置
​ 注释掉跳过密码

4. 登录MySQL

​ mysql -P 3306 -u root -p123 mysql -e ‘show tables’
​ -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表
​ grant SELECT (id), INSERT (name,age) ON mydb.mytbl to ‘user8’@‘localhost’ identified by ‘QianFeng@123’;
​ Column level
​ ==客户端主机
​ %
​ 所有主机
​ 192.168.2.% 192.168.2.0网段的所有主机
​ 192.168.2.168 指定主机
​ localhost 指定主机
​ ==with_option参数
​ GRANT OPTION
​ 授权选项
​ mysql权限示例
​ 赋予权限
​ 授权目标
​ 授予admin3 对bbs库 所有的表,具有所有权限(不包含授权)
​ GRANT ALL ON bbs.* TO admin3@’%’ IDENTIFIED BY ‘QianFeng@13910604684’;
​ 赋权示例
​ 1.准备测试账户
​ root账户创建
​ CREATE USER admin3@’%’ IDENTIFIED BY ‘QianFeng@123’;
​ 2.授权账户
​ root账户授权
​ GRANT ALL ON bbs.* TO admin3@’%’ IDENTIFIED BY ‘QianFeng@13910604684’;
​ 3.使用测试账户操作数据库
​ [root@localhost ~]# mysql -uadmin3 -p’QianFeng@123’
​ mysql> create database bbs;
​ 试试创建别的库
​ mysql> create database bba;
​ ERROR 1044 (42000): Access denied for user ‘admin3’@’%’ to database ‘bba’
​ 进入bbs库,创建数据表和插入数据。
​ 授权验证完毕
​ 回收权限
​ 查看权限
​ 查看自己的权限
​ SHOW GRANTS\G
​ 查看别人的权限
​ SHOW GRANTS FOR admin3@’%’\G
​ 回收权限REVOKE
​ 语法
​ REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’
​ 示例
​ REVOKE ALL PRIVILEGES ON bbs.* FROM admin3@’%’; //回收所有权限
​ 删除用户的版本问题
​ 5.6之前,先 revoke all privilege 再 drop user
​ 5.7之后,直接 drop user
​ 日志
​ 一、日志分类
​ 图示

			1 错误日志 :启动,停止,关闭失败报错。rpm安装日志位置 /var/log/mysqld.log
			2 通用查询日志:所有的查询都记下来。
			3 二进制日志:实现备份,增量备份。只记录改变数据,除了select都记。
			4 中继日志:读取主服务器的binlog,在本地回放。保持一致。
			5 slow log:慢查询日志,指导调优,定义某一个查询语句,定义超时时间,通过日志提供调优建议给开发人员。
			6 DDL log: 定义语句的日志。
	二、Error Log
		vim   /etc/my.cnf
			进入主配置文件,观察日志是否启动。
		log-error=/var/log/mysqld.log
			该字段,标记是否启动日志,以及日志位置。
		如果哪天mysql服务起不来了,请来这个日志文件看看。
	三、Binary Log
		默认没有开启二进制日志
		启动二进制日志
			# vim   /etc/my.cnf
			log_bin
				添加该字段。指启动二进制日志
			server-id=2
				群集问题,必须指定该主机的序号。数字随意
			# systemctl restart mysqld
				重启数据库
		测试
			1 查看二进制日志文件当前状态
				ls /var/lib/mysql/*bin*
					查询二进制文件生成完成。
				mysqlbinlog -v /var/lib/mysql/localhost-bin.000001
					查看二进制文件日志。后续讲解
				# at 123
					找到一个记录位置
			2 进入数据库,进行数据操作
				创库,创表,创数据(过程略)
			3 完成二进制日志启动,查询测试
				mysqlbinlog -v /var/lib/mysql/localhost-bin.000001 
					找到刚才创建的记录即可。
	四、Slow Query Log
		默认慢查询日志未开启
		开启慢查询日志功能
			vim   /etc/my.cnf
				 加入下面2行配置
				slow_query_log=1
					启动慢查询日志
					这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。
				long_query_time=3
					当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。
				重启服务器
					#systemctl  restart  mysqld
		查看慢查询日志文件
			#ll /var/lib/mysql/*slow*
				查看日志文件已经生成
		模拟慢查询
			mysql>SELECT BENCHMARK(500000000,2*3);
				基本测试语句,测试一个超长时间的查询。
				课后作业:收集数据库压力测试工具信息。(面试题)
		验证慢查询日志
			#tail /var/lib/mysql/localhost-slow.log 
				观察长查询日志记录,记录了刚才超长的查询结果。

稍后反馈给开发部,进行优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值