设为首页 收藏本站
查看: 971|回复: 0

[经验分享] 详解MySQL用户与授权、MySQL日志管理、数据乱码解决方案。

[复制链接]

尚未签到

发表于 2018-10-3 13:00:08 | 显示全部楼层 |阅读模式
数据库是信息系统中非常重要的环节,合理高效的对它进行管理是很重要的工作。通常是由总管理员创建不同的管理账户,然后分配不同的操作权限,把这些账户交给相应的管理人员使用。本篇我们在CentOS7.5操作系统上应用MySQL5.7版本。
用户与授权(用户管理、授权控制)
一、用户管理包括:新建用户、删除用户、重命名用户、给用户设置密码、忘记root密码的解决办法;
select User,authentication_string,host from user;            //查看有多少个用户及用户信息 :
DSC0000.jpg

create user 'test01'@'localhost'>
DSC0001.jpg

grant all on . to 'test02'@'localhost'>
DSC0002.jpg

drop user 'test01'@'localhost';           //删除用户:
DSC0003.jpg

rename user 'test02'@'localhost' to 'user01'@'192.168.100.70';   //用户重命名:
DSC0004.jpg

select password('123123');     //将密码的明文转化成密文:
DSC0005.jpg

create user 'user01'@'localhost'>set password for 'user01'@'localhost' = password('123123');       // 如果密码忘了 可以重新更改密码 :
DSC0006.jpg

使用MySQL时,如果忘记了其他用户的密码,可以使用root用户重新设置,但是如果忘记了root密码,就需要采取特殊的方法进行操作。这里直接修改授权表可以修改root密码,下面介绍它 的使用步骤:
  [root@localhost bin]# systemctl stop mysqld.service      //先关闭MySQL数据库
  [root@localhost bin]# netstat -ntap | grep 3306         //查看一下监听端口
  [root@localhost bin]# vim /etc/my.cnf                 //修改MySQL配置文件
  在[mysqld]项插入 skip-grant-tables               //插入skip-grant-tables 跳过验证表
  [root@localhost bin]# systemctl start mysqld.service    //开启MySQL数据库
  [root@localhost bin]# netstat -ntap | grep 3306        //查看监听端口
  登录 mysql                          //然后直接mysql 就能登录到数据库中
  update mysql.user set authentication_string = password('123123') where user='root';     //更新数据库信息 将root密码改为123123
  退出quit
  [root@localhost bin]# vim /etc/my.cnf     //然后再进入配置文件将刚才的skip-grant-tables删掉
  删除 skip-grant-tables
  [root@localhost bin]# systemctl restart mysqld.service    //重启服务
  [root@localhost bin]# mysql -uroot -p        //账号、密码登录MySQL
  Enter password: 123123
二、授权控制包括授予权限、查看权限、撤销权限、权限列表说明等。
主要命令操作如下:

  grant select,update on . to 'user01"@"localhost'>  语法:revoke 权限 on数据库.表 from 用户@主机;
  revoke updtae on . from ‘user01’@’localhost’;   //撤销用户user01任意库,组的的updta的权限
  show grants for "user01'@'localhost';   // 查看用户权限
MySQL日志管理(错误日志、通用查询日志、二进制日志、慢查询日志)
接下来修改MySQL的配置文件,将以上四种日志的配置文件插入到[mysqld]中:
  [root@localhost bin]# cd /usr/local/mysql/data/     //mysql日志存放位置
  [root@localhost bin]# vim /etc/my.cnf     // 将以下内容插入到[mysqld]中:
  #错误日志
  log-error=/usr/local/mysql/data/mysql_error.log   //在此路径下定义错误日志的存放位置、文件名
  #通用日志
  general_log=ON        //开启   
  general_log_file=/usr/local/mysql/data/mysql_general.log   //指定日志文件存放位置、文件名
  #二进制日志(记录用户对数据库的操作)
  log_bin=mysql-bin      //指定二进制日志
  #慢日志
  slow_query_log=ON                                     //开启   
  slow_query_log_file=mysql_slow_query.log    //指定日志文件存放位置、文件名
  long_query_time=1                                        //设置最长记录时间
DSC0007.jpg

查看已经配置好的日志文件:
DSC0008.jpg

错误日志:
  1.主要记录当MySQL启动或停止时,以及在运行过程中发生任何错误时的相关信息。错误日志默认保存在MySQL的安装路径data文件夹下,后缀名是.err。
  2.在MySQL的配置文件中,可以指定日志文件的保存位置和日志的文件名。log-error=file_name选项来指定保存错误日志的位置,file_name 指定日志文件名,如果没有指定文件名,使用host_name.err作为文件名。重启MySQL后生成mysql_error.log用来记录错误日志。
通用查询日志:
  1.通用查询日志用来记录MySQL的所有连接和语句,默认是关闭的。使用show语句可以查询出日志的信息。
  2.修改MySQL配置文件的general_log=ON选项,可以打开通用查询日志,general_log_file=name定义通用查询日志的位置,如果没有指定file_named的值,默认名是host_name.log。重启MySQL后通用查询日志生效。
  show variables like 'general%';  //查看通用日志文件状态:
DSC0009.jpg

二进制日志:
  1.二进制日志用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,主要目的是在恢复数据时能够最大程度的恢复数据库。二进制日志默认是开启的,在data文件夹下,以mysql-bin命名,数据量大时,它会自动分割成多个日志文件,以数字做扩展名。
  2.二进制日志可以使用MySQL的工具mysqlbinlog查看二进制文件:
  mysqlbinlog --no-defaults mysql-bin.000001   //5.7版本MySQL 查看二进制日志文件
  show variables like 'log_bin%';  //查看二进制日志文件状态(是否开启):
DSC00010.jpg

慢查询日志:
  1.慢查询日志记录所有执行时间超过long_query_time秒的SQL语句,用于找到哪些查询语句执行时间长,以便对其进行优化。默认慢查询日志是关闭的,slow_query_log是,慢查询的选项,默认是OFF。
  2.使用SQL语句开启慢查询功能。
  3.慢查询时间设置默认为10秒,记录10秒内的查询,可以通过global long_query_time选项进行修改。使用show语句查看慢查询日志。
  show variables like '%slow%';   //查看慢查询日志文件状态(是否开启):
DSC00011.jpg

  show variables like 'long_query_time';    //查看最长记录时间:
DSC00012.jpg

  set global slow_query_log=ON;         //开启慢查询日志:
DSC00013.jpg

  慢查询测试:select sleep(6);   //延迟6秒:
DSC00014.jpg

  [root@localhost data]# vim mysql_slow_query.log   //进入慢日志文件查看记录信息,可以看到相应的记录。
数据乱码解决方案
MySQL服务器使用中经常有乱码产生,主要有以下几种原因:
  1.服务器系统字符设置问题
  2.数据表语系设置的问题
  3.客户端连接语系的问题
  总结:乱码问题原因简单解释就是 在使用、存储数据的时候,各个环节设置的字符集如果不同,就会产生乱码。
解决方法:对于MySQL服务器,只要设置存储的字符集为UTF-8,对应的客户端程序也使用相同编码,就不会产生乱码。例如:create database chartest character set 'utf8_general_ci'; 在创建数据库时使用参数character set设置字符集,collate是对字符集进行校队的规则,字符集设置好后后续在库中都是默认的UTF-8了。
本章总结:
1.MySQL新建用户需要指定权限。
2.忘记root密码,可以跳过权限表进行修改。
3.MySQL日志包括错误日志、通用查询日志、二进制日志、慢速查询日志。
4.MySQL乱码问题可以采用指定字符集UTF-8的方式解决。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-609704-1-1.html 上篇帖子: MySQL over函数的用法 下篇帖子: MySQL基础【MySQL运维实践】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表