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';

30


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

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

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

31

删除用户

命令格式:drop user ‘user’@‘host’

drop user ‘test2’@‘localhost’

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

32

重命名用户

命令格式:rename user 'old_user'@'host' to 'new_user'@'host';

rename user 'test1'@'localhost' to 'user1'@'192.168.30.55';

33

给用户设置密码

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

(1)修改当前登录用户密码的命令格式:

set password = password('密码');

34  

(2)修改其他用户密码 的命令格式:

set password for ‘user’@‘host’ = password(‘密码’);

35

忘记root密码的解决办法

1)systemctl stop mysqld.service 关闭数据库

2)修改mysql的配置文件,

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

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

36  

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

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

37  

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

38















授权控制

在mysql中,权限设置非常重要,分配权限可以清晰地划分责任。

(1)授予权限 ,

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

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

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

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

39

使用lisi登录mysql进行验证

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

40

41

(2)撤销权限

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

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

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

42

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.000001

43 

(4)慢查询日志

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

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

#慢日志

slow_query_log=ON                      #开启慢查询功能

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

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

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

44

45  

数据乱码产生的原因

在计算机中任何数据都是以二进制存储的,要存储一个字符就要对它进行编码,用一个二进制数与其对应,这种对应的规则就是字符的编码。编码的规则有很多,一种规则所编码的“字符”的集合就叫做“字符集”。在指定编码标准的时候,“字符的集合“和”编码“一般都是同时制定的,因此,平时我们所说的”字符集“,例如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;可以查看表的字符集。

46

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

47



48

49

(3)一劳永逸的方法,在配置文件my.cnf加入以下设置

[client]

port = 3306

default-character-set=utf8    #加入这句设定

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

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

猜你喜欢

转载自blog.51cto.com/13728740/2166120