法治建设优秀网站,网站1级域名换2级的影响收录吗,高端医疗网站建设,中国哪些网站做软装目录 一、日志管理1.错误日志2.二进制日志3.慢查询日志 二、权限管理(重点)1.用户登录管理2.创建用户及授权3.刷新权限4.权限简介5.查看权限7.修改密码8、删除用户9、查看密码复杂度 一、日志管理 日志类型 1、错误日志#xff1a;启动#xff0c;停止#xff0c;关闭失败报… 目录 一、日志管理1.错误日志2.二进制日志3.慢查询日志 二、权限管理(重点)1.用户登录管理2.创建用户及授权3.刷新权限4.权限简介5.查看权限7.修改密码8、删除用户9、查看密码复杂度 一、日志管理 日志类型 1、错误日志启动停止关闭失败报错。rpm安装日志位置/var/log/mysqld.log 默认开启2、通用查询日志所有的查询都记下来。默认关闭一般不开启3、二进制日志(bin log)实现备份增量备份。只记录改变数据除了select都记4、中继日志(Relay log)读取主服务器的binlog在slave机器本地回放保持与主服务器数据一致5、slow log慢查询日志指导调优定义某一个查询语句执行时间过长通过日志提供调优建议给开发人员6、DDL log 数据定义语言的日志 1.错误日志
[rootlocalhost ~]# mkdir -p /usr/local/mysql/logs/
[rootlocalhost ~]# touch /usr/local/mysql/logs/mysqld.log
[rootlocalhost ~]# chown -R mysql:mysql /usr/local/mysql/logs/
[rootlocalhost ~]# vim /etc/my.cnf
[mysqld]
log-error/usr/local/mysql/logs/mysqld.log
//log-error/var/log/mysqld.log
//编译安装的在/usr/local/mysql/yum安装的在/var/log/mysqld.log
[rootlocalhost ~]# systemctl restart mysqld2.二进制日志
//Binary Log需要提前开启
[rootlocalhost ~]# mkdir -p /usr/local/mysql/logs/mysql-bin
[rootlocalhost ~]# chown -R mysql:mysql /usr/local/mysql/logs/mysql-bin
[rootlocalhost ~]# vim /etc/my.cnf
[mysqld]
log-bin/usr/local/mysql/logs/mysql-bin/mylog //如果不指定路径默认在/var/lib/mysql
server-id1 //AB复制的时候使用为了防止相互复制会设置一个ID来标识谁产生的日志
[rootlocalhost ~]# systemctl restart mysqld
//查看binlog日志
[rootlocalhost]# cd /usr/local/mysql/logs/mysql-bin/
[rootlocalhost mysql-bin]# ls
mylog.000001 mylog.index
[rootlocalhost mysql-bin]# mysqlbinlog mylog.000001 -v
mysqlbinlog: [ERROR] unknown variable default-character-setutf8
//取消字符集查看binlog日志
[rootlocalhost mysql-bin]# mysqlbinlog --no-defaults mylog.000001 -v
/*!50530 SET SESSION.PSEUDO_SLAVE_MODE1*/;
/*!50003 SET OLD_COMPLETION_TYPECOMPLETION_TYPE,COMPLETION_TYPE0*/;
DELIMITER /*!*/;
# at 4
#230706 11:51:53 server id 1 end_log_pos 123 CRC32 0x510185a5 Start: binlog v 4, server v 5.7.41-log created 230706 11:51:53 at startup
#Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG
WTqmZA8BAAAAdwAAAHsAAAABAAQANS43LjQxLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABZOqZkEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AaWFAVE
/*!*/;
# at 123
#230706 11:51:53 server id 1 end_log_pos 154 CRC32 0x8293327a Previous-GTIDs
#[empty]
SET SESSION.GTID_NEXT AUTOMATIC /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
#End of log file
/*!50003 SET COMPLETION_TYPEOLD_COMPLETION_TYPE*/;
/*!50530 SET SESSION.PSEUDO_SLAVE_MODE0*/;
#注
1. 重启mysqld 会截断日志
2. mysql flush logs; //会截断
3. mysql reset master; //删除所有binlog不要轻易使用相当于rm -rf /
4. 删除部分mysql PURGE BINARY LOGS TO mylog.000002; //删除mysqllog.000002之前的日志 purge清除
5. 暂停 仅当前会话SET SQL_LOG_BIN0; //关闭SET SQL_LOG_BIN1; //开启解决binlog日志不记录insert语句:
1. 登录mysql后设置binlog的记录格式mysql set binlog_formatstatement;
2. 然后最好在my.cnf中添加binlog_formatstatement
3.修改完配置文件之后记得重启服务3.慢查询日志
1、Slow Query Log 慢查询开关打开后并且执行的SQL语句达到参数设定的阈值后就会触发慢查询功能打印出日志 2、慢查询日志主要是记录执行时间超过指定阈值的SQL语句这些执行时间较长的语句称为慢查询。 3、作用监控和分析慢查询有助于优化SQL和数据库架构。通过分析慢查询可以了解哪些SQL执行效率低下哪些表或者索引需要优化。
[rootlocalhost ~]# mkdir /usr/local/mysql/logs/mysql-slow/
[rootlocalhost ~]# touch /usr/local/mysql/logs/mysql-slow/slow.log
[rootlocalhost ~]# chown mysql.mysql /usr/local/mysql/logs/mysql-slow/
[rootlocalhost ~]# vim /etc/my.cnf
[mysqld]
slow_query_log1 //开启
slow_query_log_file/usr/local/mysql/logs/mysql-slow/slow.log
long_query_time3 //设置慢查询超时间单位是秒就是超过3秒的sql查询语句就被认为慢查询sql
[rootlocalhost ~]# systemctl restart mysqld
//验证查看慢查询日志
mysql select sleep(6); //等待 6 秒钟然后返回结果
[rootlocalhost ~]# cat /usr/local/mysql/logs/mysql-slow/slow.log二、权限管理(重点)
1.用户登录管理
1.1.本地登录
[rootlocalhost ~]# mysql -uroot -pJianglt1231.2.客户端远程登陆 需要注意的是远程端也需要有mysql的客户端才行 客户端语法mysql -u 用户名 -P 端口号 -p 密码 -h ip地址 -P端口号如果是默认端口号就不用-P指定端口
[rootlocalhost ~]# mysql -h192.168.17.131 -P 3306 -uroot -pJianglt123
-bash: mysql: 未找到命令
[rootlocalhost ~]# yum -y install mysql
[rootlocalhost ~]# mysql -h192.168.17.131 -P 3306 -uroot -pJianglt123
ERROR 1130 (HY000): Host 192.168.17.128 is not allowed to connect to this MySQL server
如果报错进入server端服务器登陆mysql执行授权操作
mysql use mysql;
mysql update user set host% where userroot;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql flush privileges;1.3.免入库的方法执行sql语句
[rootlocalhost ~]# mysql -h192.168.17.131 -P 3306 -uroot -pJianglt123 -e show databases;-h 指定主机名 【默认为localhost】 -大P MySQL服务器端口 【默认3306】 -u 指定用户名 【默认root】 -p 指定登录密码 【默认为空密码】 -e 接SQL语句可以写多条用;隔开 [rootlocalhost ~]# mysql -h192.168.17.131 -P 3306 -uroot -pJianglt123 -D mysql -e select * from user;
//此处 -D mysql为指定登录的数据库
//同时执行2条sql语句
[rootlocalhost ~]# mysql -h192.168.17.131 -P 3306 -uroot -pJianglt123 -D company -e show tables;select * from employee5;
-------------------
| Tables_in_company |
-------------------
| employee5 |
| new_t1 |
| new_t2 |
-------------------
------------------------------------------------------------------------------
| id | name | sex | hire_date | post | job_description | office | dep_id |
------------------------------------------------------------------------------
| 3 | jack | male | 2018-02-02 | instructor | teach | 501 | 100 |
| 4 | harry | male | 2018-02-02 | hr | NULL | 502 | 101 |
| 5 | lili | female | 2018-02-06 | sale | salecc | 503 | 102 |
| 6 | xiaoguo | male | 2018-02-05 | sale | | 503 | 102 |
------------------------------------------------------------------------------1.4.修改端口rpm安装
[rootlocalhost ~]# vim /etc/my.cnf
port2222
[rootlocalhost ~]# systemctl restart mysqld
//在到【mysqld】标签下面添加port指定端口重启服务2.创建用户及授权
2.1.方法一CREATE USER语句创建
#创建用户为tom并设置密码
mysql create user tomlocalhost identified by Jianglt123; #更新授权表
mysql flush privileges; #查询现有的用户
mysql select host,user from mysql.user;
--------------------------
| host | user |
--------------------------
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | tom |
--------------------------
4 rows in set (0.00 sec)
注
identified by 是设置密码的
在用户tom 这里可以选择
%允许所有主机远程登陆包括localhost。也可以指定某个ip允许某个ip登陆。也可以是一个网段。
localhos只允许本地用户登录客户端登录的方式% 所有主机远程登录192.168.246.% 192.168.246.0网段的所有主机192.168.246.252 指定主机localhost 只允许本地用户登录
mysql create user jack192.168.17.% identified byJianglt123;
Query OK, 0 rows affected (0.00 sec)
mysql select host,user from mysql.user;
-----------------------------
| host | user |
-----------------------------
| % | root |
| 192.168.17.% | jack |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | tom |
-----------------------------
5 rows in set (0.00 sec)2.2.方法二GRANT 创建用户并同时授权 注mysql 8.0必须是先创建用户再授权 语法grant 权限列表 on 库名.表名 to 用户名客户端主机 IDENTIFIED BY 口令 all privileges授予所有权限包括SELECT、INSERT、UPDATE、DELETE 等所有权限 on *.*代表对所有数据库( * )下所有表(.*)
权限列表
all所有权限不包括授权权限select,update查询更新的权限select,insert查询插入的权限
数据库.表名
*.*所有库下的所有表web.*web库下的所有表web.student_infoweb库下的student_info表
单独授权
#给刚才创建的用户tom授权
mysql grant select,insert on *.* to tomlocalhost identified by Jianglt123;
mysql flush privileges;
案例
#创建test用户并授权所有权限只允许本地登录密码为ABcabc123.com
mysql grant all privileges on *.* to testlocalhost IDENTIFIED BY ABcabc123.com;#如果用户已存在则会修改test用户的登录方式改成所有主机和修改登陆密码如果用户不存在则会创建
mysql grant all privileges on *.* to test% identified by Jianglt123;
mysql flush privileges;备注 1.无用户时可以创建用户并指定口令 2.口令有密码复杂性要求 3.%表示任意主机 口令复杂性要求出错提示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 需要执行两个参数来把mysql默认的密码强度的取消
mysql set global validate_password_policy0;
mysql set global validate_password_mixed_case_count2;
set global validate_password_policy0;控制MySQL密码强度验证的级别 0 - 低级别不做任何密码强度验证 1 - 中等级别密码必须长度为8字节且不能和用户名相同 2 - 高级别密码必须符合 medum 级别并且包括数字、大小写字母和特殊字符等 set global validate_password_mixed_case_count2; 控制密码中必须包含的大小写字符数设置为2表示要求密码中至少包含2个大小写字符
#修改远程登陆将原来的localhost修改为%或者ip地址
mysql select host,user from mysql.user;
-----------------------------
| host | user |
-----------------------------
| % | root |
| 192.168.17.% | jack |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | test |
| localhost | tom |
-----------------------------
7 rows in set (0.00 sec)
mysql use mysql
mysql update user set host 192.168.17.% where user tom;
mysql flush privileges;
mysql select host,user from mysql.user;
-----------------------------
| host | user |
-----------------------------
| % | root |
| % | test |
| 192.168.17.% | jack |
| 192.168.17.% | tom |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | test |
-----------------------------
7 rows in set (0.00 sec)3.刷新权限
修改表之后需要刷新权限
mysql flush privileges;4.权限简介
权限权限级别权限说明CREATE数据库、表或索引创建数据库、表或索引权限DROP数据库或表删除数据库或表权限GRANT OPTION数据库、表或保存的程序赋予权限选项ALTER表更改表比如添加字段、索引等DELETE表删除数据权限INDEX表索引权限INSERT表插入权限SELECT表查询权限UPDATE表更新权限LOCK TABLES服务器管理锁表权限CREATE USER服务器管理创建用户权限REPLICATION SLAVE服务器管理复制权限SHOW DATABASES服务器管理查看数据库权限
5.查看权限
5.1.看自己的权限
mysql show grants;
-------------------------------------------------------------
| Grants for root% |
-------------------------------------------------------------
| GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION |
-------------------------------------------------------------
1 row in set (0.00 sec)
mysql show grants\G
*************************** 1. row ***************************
Grants for root%: GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION5.2.看别人的权限
mysql show grants for tomlocalhost;
--------------------------------------------------
| Grants for tomlocalhost |
--------------------------------------------------
| GRANT SELECT, INSERT ON *.* TO tomlocalhost |
--------------------------------------------------
1 row in set (0.00 sec)
mysql show grants for tomlocalhost\G
*************************** 1. row ***************************
Grants for tomlocalhost: GRANT SELECT, INSERT ON *.* TO tomlocalhost 6.移除用户权限 语法REVOKE 权限 ON 数据库.数据表 FROM 用户IP地址; 被回收的权限必须存在否则会出错 整个数据库使用 ON datebase.*; 特定的表使用 ON datebase.table; 6.1.回收指定的权限
#先查看一下tom的权限
mysql show grants for tomlocalhost;
--------------------------------------------------
| Grants for tomlocalhost |
--------------------------------------------------
| GRANT SELECT, INSERT ON *.* TO tomlocalhost |
--------------------------------------------------
1 row in set (0.00 sec)
#回收指定的权限
mysql revoke select,insert on *.* from tomlocalhost;
#回收完后再次查看
mysql show grants for tomlocalhost;
-----------------------------------------
| Grants for tomlocalhost |
-----------------------------------------
| GRANT USAGE ON *.* TO tomlocalhost |
-----------------------------------------
1 row in set (0.00 sec)
#USAGE的意思该用户仅被分配了最小的USAGE权限只允许访问但无法操作数据
mysql flush privileges;6.2.回收所有权限
#先查看一下test的权限
mysql show grants for test%;
-------------------------------------------
| Grants for test% |
-------------------------------------------
| GRANT ALL PRIVILEGES ON *.* TO test% |
-------------------------------------------
1 row in set (0.00 sec)
#回收所有权限
mysql revoke all privileges on *.* from test%;
mysql show grants for test%;
----------------------------------
| Grants for test% |
----------------------------------
| GRANT USAGE ON *.* TO test% |
----------------------------------
1 row in set (0.00 sec)
mysql flush privileges;7.修改密码
7.1.root用户修改自己密码
方法一#123为旧密码
mysql mysqladmin -uroot -pJianglt123 password Jianglt123!
方法二:
mysql SET PASSWORDnew_password;
报错
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
#你需要执行两个参数来把mysql默认的密码强度的取消了才行
mysql set global validate_password_policy0;
mysql set global validate_password_mixed_case_count2;
#这时你再执行
SET PASSWORD PASSWORD(12345678);7.2.root修改其他用户密码
mysql use mysql
#mysql SET PASSWORD FOR testlocalhostnew_password
#用户 新密码
mysql set password for testlocalhost12345678;
Query OK, 0 rows affected (0.00 sec) 8、删除用户
8.1.方法一DROP USER语句删除
mysql drop user test;
Query OK, 0 rows affected (0.00 sec)8.2.方法二DELETE语句删除
mysql DELETE FROM mysql.user WHERE usertom AND hostlocalhost;
#更新授权表
mysql FLUSH PRIVILEGES;9、查看密码复杂度 MySQL 默认启用了密码复杂度设置插件名字叫做 validate_password初始化之后默认是安装的 如果没有安装执行下面的命令会返回空或者没有值这时需要安装该插件 #启用validate_password插件
mysql INSTALL PLUGIN validate_password SONAME validate_password.so;
#如果存在会报错
mysql INSTALL PLUGIN validate_password SONAME validate_password.so;
ERROR 1125 (HY000): Function validate_password already exists9.1.查看密码复杂度
mysql show variables like validate%; #validate验证
----------------------------------------------
| Variable_name | Value |
----------------------------------------------
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
----------------------------------------------参数解释 validate_password_length 密码最少长度默认值是8最少是0 validate_password_dictionary_file用于配置密码的字典文件字典文件中存在的密码不得使用。 validate_password_policy 代表的密码策略默认是MEDIUM中等强度 LOW 不进行任何密码强度检查任何密码都可以被接受。 MEDIUM 密码长度至少8个字符并且不能与用户名相同。 STRONG 除了满足 MEDIUM 之外密码还必须包含至少一个大写字母一个小写字母一个数字和一个特殊字符。 validate_password_number_count 最少数字字符数默认1最小是0 validate_password_mixed_case_count 最少的大写字符和小写字符数同时有大写和小写默认为1最少是0 validate_password_special_char_count 最少特殊字符数默认1最小是0 9.2.查看密码策略
mysql select validate_password_policy;
----------------------------
| validate_password_policy |
----------------------------
| MEDIUM |
----------------------------
1 row in set (0.00 sec)策略 0 or LOW 设置密码长度由参数validate_password_length指定 1 or MEDIUM 满足LOW策略同时还需满足至少有1个数字小写字母大写字母和特殊字符 2 or STRONG 满足MEDIUM策略同时密码不能存在字典文件dictionary file中 9.3.查看密码的长度
mysql select validate_password_length;
----------------------------
| validate_password_length |
----------------------------
| 8 |
----------------------------
1 row in set (0.00 sec)9.4.设置密码复杂度
mysql set global validate_password_length1; #设置密码长度为1个
mysql set global validate_password_number_count2; #设置密码数字最少为2个9.5.设置密码复杂性策略
mysql set global validate_password_policyLOW; #设置密码策略数字也可以
mysql flush privileges; #刷新授权