Mysql5.7数据库的常用管理
本文主要给大家简单讲讲MySQL5.7数据库的常用管理,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望Mysql5.7数据库的常用管理这篇文章可以给大家带来一些实际帮助。
创新互联自2013年创立以来,是专业互联网技术服务公司,拥有项目做网站、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元博爱做网站,已为上家服务,为博爱各地企业和个人服务,联系电话:13518219792
用户管理
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';
(2)也可以使用修改权限的语句grant进行创建;
命令格式:grant 权限 on 数据库.表 to 用户@主机 identified by 密码;
grant all on *.* to ‘test2’@’localhost’ identified by ‘abc123’;
删除用户
命令格式:drop user ‘user’@‘host’;
drop user ‘test2’@‘localhost’;
删除test2这个用户后,数据库中已经没有该用户了。
重命名用户
命令格式:rename user 'old_user'@'host' to 'new_user'@'host';
rename user 'test1'@'localhost' to 'user1'@'192.168.30.55';
给用户设置密码
修改用户密码的方式有两种,修改当前登录的用户密码;修改其他用户的密码。
(1)修改当前登录用户密码的命令格式:
set password = password('密码');
(2)修改其他用户密码 的命令格式:
set password for ‘user’@‘host’ = password(‘密码’);
忘记root密码的解决办法
1)systemctl stop mysqld.service 关闭数据库
2)修改mysql的配置文件,
vim /etc/my.cnf 写入skip-grant-tables参数
作用是用户登录时不使用授权表,所以用户可以不使用密码密码直接登录。
3)进入mysql,使用update修改root密码
update mysql.user set authentication_string = password('qazwsx123') where user='root';
4)将配置文件里的刚才加入的参数删掉,重启mysql,使用新密码进行登录
授权控制
在mysql中,权限设置非常重要,分配权限可以清晰地划分责任。
(1)授予权限 ,
使用grant命令,是指定用户允许它操作某些表,对这些表拥有相应的操作权限。
命令格式:grant 权限 on 数据库.表 to 用户@主机 identified by 密码;
查看用户权限的命令格式:show grants for ‘user’@‘localhost’;
创建一个用户lisi来做实验验证,使用户lisi可以在主机localhost连接,使用密码“123qwe”,他拥有对所有数据库表的查询和修改权限
使用lisi登录mysql进行验证
select,update语句可以正常执行,但是执行insert语句显示没有足够的权限
(2)撤销权限
使用revoke语句可以撤销指定用户的数据库权限,命令格式如下:
revoke 权限 on 数据库.表 from 用户@主机;
revoke update on *.* from 'lisi'@'localhost';
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 = 1character_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
(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 #设置超过一秒执行的语句被记录
可以将以上的所有参数同时在配置文件里进行设定,然后重启服务,查看结果
数据乱码产生的原因
在计算机中任何数据都是以二进制存储的,要存储一个字符就要对它进行编码,用一个二进制数与其对应,这种对应的规则就是字符的编码。编码的规则有很多,一种规则所编码的“字符”的集合就叫做“字符集”。在指定编码标准的时候,“字符的集合“和”编码“一般都是同时制定的,因此,平时我们所说的”字符集“,例如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;可以查看表的字符集。
(2)创建表时也可以指定字符集,数据库中的表根据需要可以设置不同的字符集
(3)一劳永逸的方法,在配置文件my.cnf加入以下设置
[client]
port = 3306
default-character-set=utf8 #加入这句设定
socket = /usr/local/mysql/mysql.sock
这时创建的数据库和表都不需要再指定,只要修改这一处,就可以统一数据库的字符集,重启后字符集生效。
Mysql5.7数据库的常用管理就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的行业资讯。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。
文章标题:Mysql5.7数据库的常用管理
文章起源:http://pwwzsj.com/article/pigigo.html