mysql中的log日志乱码_Mysql5.7版本,数据库管理(用户管理,日志管理,数据乱码解决)...

数据库是信息系统中非常重要的一个环节,合理高效的对它进行管理是很重要的工作。通常是总管理员创建不同的管理帐户,然后分配不同的操作权限,把这些帐户交给相应的管理人员使用。

用户管理

1,新建用户创建的用户是保存在mysql数据库的user表里,使用查询语句可以查看创建的用户。(1) 命令格式:create user ‘user’@‘host’ identified by ‘密码’;

查看系统用户;select user,authentication_string,host from mysql.user;

create user 'test1'@'localhost' identified by 'abc123';

03cc31276a984c2de35a643aaa6d21a8.png

(2)也可以使用修改权限的语句grant进行创建;

命令格式:grant 权限 on 数据库.表 to 用户@主机 identified by 密码;

grant all on *.* to ‘test2’@’localhost’ identified by ‘abc123’;

dc7c0562a96b15599774c09b7d3410b6.png

删除用户命令格式:drop user ‘user’@‘host’;

删除test2这个用户后,数据库中已经没有该用户了。

9c1689a4b10062961133b22ce0c34c66.png

重命名用户

给用户设置密码

修改用户密码的方式有两种,修改当前登录的用户密码;修改其他用户的密码。

(1)修改当前登录用户密码的命令格式:set password = password('密码');

52008d0d2cce29698186879b1430e606.png

(2)修改其他用户密码 的命令格式:set password for ‘user’@‘host’ = password(‘密码’);

82a35e7b9d2e371aedf3f10b438f6056.png

忘记root密码的解决办法1)systemctl stop mysqld.service 关闭数据库

2)修改mysql的配置文件,

vim /etc/my.cnf   写入skip-grant-tables参数

作用是用户登录时不使用授权表,所以用户可以不使用密码密码直接登录。

f4d260d429001844a03eb657203a80ac.png

3)进入mysql,使用update修改root密码

update mysql.user set authentication_string = password('qazwsx123') where user='root';

1b539cda120b032474d6f084d143f721.png

4)将配置文件里的刚才加入的参数删掉,重启mysql,使用新密码进行登录

433364efcd32f5d6e5833f8c58ee575e.png

授权控制在mysql中,权限设置非常重要,分配权限可以清晰地划分责任。(1)授予权限 ,

使用grant命令,是指定用户允许它操作某些表,对这些表拥有相应的操作权限。

命令格式:grant 权限 on 数据库.表 to 用户@主机 identified by 密码;

查看用户权限的命令格式:show grants for ‘user’@‘localhost’;

创建一个用户lisi来做实验验证,使用户lisi可以在主机localhost连接,使用密码“123qwe”,他拥有对所有数据库表的查询和修改权限

70a98147c2b073dadaba46ac9094c247.png

使用lisi登录mysql进行验证

select,update语句可以正常执行,但是执行insert语句显示没有足够的权限

7c6febf1a0bc7a773a45a7097211d3a3.png

4b59c5721c2f80a319db0a2c3cdb7398.png

(2)撤销权限

使用revoke语句可以撤销指定用户的数据库权限,命令格式如下:

revoke 权限 on 数据库.表 from 用户@主机;

revoke update on *.*  from 'lisi'@'localhost';

e936e48291a97c4eb43553b966b76f7c.png

Mysql日志管理由于日志文件是掌握数据库运行状态的重要参考,因此日志文件的维护也有十分重要的意义

mysql的日志类型有:错误日志,通用日志,二进制日志,慢速查询日志

默认的工作目录为:/usr/local/mysql/data/

(1)错误日志主要记录当mysql启动和停止时,以及在运行过程中发生任何错误时的相关信息。

在mysql的配置文件my.cnf中可以指定错误日志的保存位置和文件名。

vim /etc/my.cnf

...............

[mysqld]

user = mysql

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

character_set_server=utf8

pid-file = /usr/local/mysql/mysqld.pid

socket = /usr/local/mysql/mysql.sock

server-id = 1

character_set_server=utf8

pid-file = /usr/local/mysql/mysqld.pid

socket = /usr/local/mysql/mysql.sock

server-id = 1

#错误日志

log-error=/usr/local/mysql/data/mysql_error.log                 #指定错误日志目录和文件名

重启mysql服务后,生成mysql_error.log用来记录错误日志

(2)通用查询日志通用查询日志用来记录mysql的所有连接和语句,默认是关闭的,修改配置文件的general_log=ON选项,可以打开通用查询日志,

vim /etc/my.cnf

...............[mysqld]

user = mysql

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

character_set_server=utf8

pid-file = /usr/local/mysql/mysqld.pid

socket = /usr/local/mysql/mysql.sock

server-id = 1

#通用日志

general_log=ON

general_log_file=/usr/local/mysql/data/mysql_general.log               #打开通用查询日志,指定位置和文件名重启mysql服务后,通用查询日志生效

(3)二进制日志二进制日志用来记录所有更新了数据或已经潜在更新了数据的语句,记录了数据的更改,主要目的是在恢复数据时能够最大程度地恢复数据库,二进制日志默认是开启的。在data目录下,以mysql-bin命名,数据量大时会自动分割成多个日志文件,以数字作为扩展名。vim /etc/my.cnf

...............[mysqld]

user = mysql

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

character_set_server=utf8

pid-file = /usr/local/mysql/mysqld.pid

socket = /usr/local/mysql/mysql.sock

server-id = 1

#二进制日志

log_bin=mysql-bin            #加入二进制日志参数

查看二进制日志文件可以使用mysqlbinlog命令进行查询mysqlbinlog --no-defaults mysql-bin.00000191cdd4297d9591e3f07bbeb33b967139.png

(4)慢查询日志慢查询日志记录所有执行时间超过long_query_time秒的SQL语句,用于找到哪些查询语句执行时间长,以便对其进行优化。默认慢查询日志是关闭的,slow_query_log是慢查询日志的选项,默认是OFFvim /etc/my.cnf

...............[mysqld]

user = mysql

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

character_set_server=utf8

pid-file = /usr/local/mysql/mysqld.pid

socket = /usr/local/mysql/mysql.sock

server-id = 1

#慢日志

slow_query_log=ON                      #开启慢查询功能

slow_query_log_file=mysql_slow_query.log    #指定慢查询日志存放目录和文件名

long_query_time=1        #设置超过一秒执行的语句被记录

可以将以上的所有参数同时在配置文件里进行设定,然后重启服务,查看结果

d7867514c97238831cd974cef16ea244.png

3c6c0b85b238beeb96a1529847b65298.png

数据乱码产生的原因在计算机中任何数据都是以二进制存储的,要存储一个字符就要对它进行编码,用一个二进制数与其对应,这种对应的规则就是字符的编码。编码的规则有很多,一种规则所编码的“字符”的集合就叫做“字符集”。在指定编码标准的时候,“字符的集合“和”编码“一般都是同时制定的,因此,平时我们所说的”字符集“,例如GB2312,GBK,和UTF-8等,除了有”字符的集合“这层含义,同时也包含了”编码“的含义。

对中文处理可以使用GB2312,GBK,它是中文字符集,而UTF-8是对世界上每个国家和地区的文字制定的字符集,并且UTF-8是可变存储长度的字符集,如英文字母只需要一个字节存储,节省了存储空间,所以数据库中通常采用UTF-8的字符集。

Mysql服务器使用中经常会有乱码产生,主要原因有以下几种;(1)服务器系统字符集设置问题

(2)数据表语系设置问题

(3)客户端连接语系问题

在使用,存储数据的时候,各个环节如果设置的字符集不同,就会产生乱码

Mysql乱码解决方法对于mysql服务器,只要设置存储的字符集为UTF-8,对应的客户端程序也使用相同的编码,就不会产生乱码,mysql设置字符集的方式有多种

(1)在创建数据库时指定字符集,使用参数character set设置字符集,collate是对字符集进行校对的规则create database chartest character set 'utf8' collate 'utf8_general_ci';

创建表时如果不指定字符集,默认按数据库字符集指定,使用show table status;可以查看表的字符集。

ab100cfd61d70823e9333002bda393ce.png

(2)创建表时也可以指定字符集,数据库中的表根据需要可以设置不同的字符集

63a3ce4b353bc81df50712d676ad12ba.png

5f3f924640b39726a72e82d4be81ea80.png

778c09940e5b475a1027a71241a156ce.png

(3)一劳永逸的方法,在配置文件my.cnf加入以下设置[client]port = 3306default-character-set=utf8    #加入这句设定socket = /usr/local/mysql/mysql.sock

这时创建的数据库和表都不需要再指定,只要修改这一处,就可以统一数据库的字符集,重启后字符集生效。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值