mysql学习之旅(十四)——Mysql的管理与维护

Mysql的管理与维护

数据库的用户管理

Mysql用户可以分为普通用户和root用户。
root用户是超级管理员,拥有所有权限。
普通用户只拥有被授予的各种权限。

权限表:
mysql服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库中。
存储账户的权限信息表主要有:user、db、host、table_priv、columns_priv和procs_priv。

各个权限表的作用

1、user表是Mysql中最重要的一个权限表,记录允许连接到服务器的账户信息,里面的权限是全局级的。

2、db表和host表是Mysql数据中非常重要的权限表;
db表中存储了用户对某个数据库的操作权限;
host表中存储了某个主机对数据库的操作权限。

3、table_priv表用来对表设置操作权限;

4、columns_priv表用来对表的某一列设置权限;

5、procs_priv表可以对存储过程和存储函数设置操作权限。

账户管理

新建普通用户

创建新用户,必须有应用的权限来执行创建操作;
在MYSQL数据库中,可以使用CREATE USER或GRANT语句。

一、使用CREATE USER语句创建新用户
基本语法格式:
CREATE USER ‘user’@‘host’
INDENTIFIED BY [PASSWORD] ‘password’
案例;
在这里插入图片描述mysql> create user ‘rose’@‘localhost’ identified by ‘rosepwd’;
Query OK, 0 rows affected (0.42 sec)

mysql> select user,host from mysql.user;
在这里插入图片描述不设置密码:
create user ‘rose’@‘localhost’;
设置哈希密码:
select password(‘rosepwd’);
create user ‘rose’@‘localhost’ identified by ‘密码的哈希值’;

二、GRANT语句:
CREATE USER语句可以用来创建账户,通过该语句可以在user表中添加一条新的记录,但是CREATE USER语句创建的新用户没有任何权限,还需要使用grant语句赋予用户权限。
而grant语句不仅可以创建新用户,还可以在创建的同时对用户授权。
使用grant语句创建新用户:
基本语法格式:
GRANT privileges ON db.table
TO ‘user’@‘host’ [INDENTIFIED BY ‘password’];
案例:
在这里插入图片描述
grant select,update on . to ‘testuser’@‘localhost’ identified by ‘testpwd’;(有问题)

删除普通用户

在mysql数据库中,可以使用DROP USER 语句删除用户,也可以直接通过DELETE语句从MYSQL.user表中删除对应的记录来删除用户。
使用DROP USER 语句删除用户:
语法:
DROP USER user[,user];
例如:
DROP USER ‘testuser’@‘localhost’;
使用DELETE 语句删除用户:
DELETE FROM mysql.user WHERE host=‘hostname’ and user=‘username’;
eg:
drop user ‘testuser’@ ‘localhost’;
delete from mysql.user where user='rose02’and host=‘localhost’;

数据库用户的权限管理

权限管理

权限管理主要是对登录到mysql的用户进行权限验证,所有用户的权限都存储在mysql的权限表中。
mysql权限系统的主要功能是证实连接到一台主机的用户,并且赋予该用户在数据库的各种权限。

授权

授权就是为某个用户授予权限。
mysql中可以使用GRANT语句为用户授予权限。
基本语法;
GRANT priv_type ON db.table to ‘user’@‘host’ [IDENTIFIED BY [PASSWORD] ‘password’];案例:
在这里插入图片描述mysql -uroot -p
grant insert,select on book.* to ‘rose’@‘localhost’;
flush privileges;刷新权限表,使之生效
授予一个用户所有的权限
grant all privileges on . to ‘rose’@‘localhost’;

查看用户的授权

基本语法结构:
SHOW GRANTS FOR ‘user’@‘host’;

收回权限

收回权限就是撤销已经赋予用户的某些权限。
语法格式:
REVOKE privilege ON db.table FROM ‘user’@‘host’;
eg:
revoke insert on book.* from ‘rose’@‘localhost’;

数据库的日志管理

什么是mysql的日志

mysql的日志记录了mysql数据库的运行情况、用户操作、错误信息等,可以为mysql管理和优化提供必要的信息。

mysql日志的分类

1、错误日志:记录mysql服务的启动、运行或停止mysql服务时出现的问题。
2、查询日志:记录了mysql的所有用户操作,包括启动和关闭服务、执行查询和更新语句等。
3、二进制日志:记录所有更改数据的语句。
4、慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引的查询。
5、错误日志:
mysql会将服务的启动、运行或停止时出现的一些错误信息记录到错误日志文件中。

启动和设置错误日志:

在默认情况下,错误日志会记录到数据库的数据目录下。如果没有在配置文件中指定文件名,则文件名默认为hostname.err。
错误日志的启动和停止以及指定日志文件名,都可以通过修改my.ini来配置。错误日志的配置项是log-error。
如果需要指定文件名,则配置项如下:
[mysqld]
log-error=file_name

查看错误日志

mysql的错误日志是以文本形式存储的,可以使用文本编辑器直接查看mysql的错误日志。
如果不知道日志文件的存储鲁济宁货,可以使用SHOW VARIABLES语句查询错误日志的存储路径。
SHOW VARIABLES LIKE’log_error’;

删除错误日志

若数据库运行时间较长,错误日志文件可能比较大,那么可以将日志文件删除,再重新创建新的错误日志文件。
mysql的错误日志是以文本文件形式存储在文件系统中的,可以直接删除。
在删除错误日志之后,如果需要重建日志文件,需要在服务器端执行以下命令:
两种方法:
1、mysqladmin -uroot -p flush-logs
2、或者登陆mysql,然后执行flush logs语句;
mysql>flush logs;
在日志文件不存在的情况下,执行flush logs语句会创建新的日志文件。
如果在日志文件存在的情况下,并不做日志备份和创建的操作。

数据库的备份与恢复

保证数据安全的最重要的一个措施是确保对数据进行定期备份,如果数据库中的数据丢失或者出现错误,可以使用备份的数据进行恢复,这样就尽可能地降低了意外原因导致的损失。

使用MYSQLdump命令备份

MYSQLdump是MYSQL提供的一个非常有用的数据库备份工具。
MYSQLdump命令执行时,可以将数据库备份成一个文本文件。
MYSQLdump备份数据库语句的基本语法格式:
mysqldump -u user -h host -p password
dbname[tbname,[tbname…]]>filename.sql;(需用管理员身份打开命令行)
案例:
在这里插入图片描述1、mysqldump -uroot -p book >D:\idea\mysql-8.0.17-winx64\mysqlbackup\book_20190901.sql
2、mysqldump -uroot -p book readerinfo>D:\idea\mysql-8.0.17-winx64\mysqlbackup\book_readerinfo_20190901.sql
3、mysqldump -uroot -p --alldatabase >D:\idea\mysql-8.0.17-winx64\mysqlbackup\dball_20190901.sql
备份所有数据库:
mysqldump -uroot -p book >D:\idea\mysql-8.0.17-winx64\mysqlbackup\book_20190901.sql

数据恢复

使用mysql命令恢复,语法格式:
mysql -u user -p [dbname] <filename.sql
案例:
在这里插入图片描述mysql -uroot -p book< c:\mysqlbackup\book_readerinfo_20180120.sql

如果已经登录MYSQL服务器,还可以使用sourse命令导入SQL文件,语法格式如下:
sourse filename
eg:
mysql>use book;
mysql>source c:\mysqlbackup\book_readerinfo_20180120.sql

数据表的导出

数据表的导入和导出
导出:就是将mysql数据库中的数据导出到外部存储文件中。
导入:就是将外部存储文件中的数据导入到mysql数据库中。

使用SELECT…INTO OUTFILE导出文本文件

语法格式:
SELECT columnlist FROM table WHERE condition INTO OUTFILE ‘filename’ [OPTIONS]
[OPTIONS]为可选参数选项,比如:
参数FIELDS TERMINATED BY ‘value’:设置字段之间的分割字符,可以为单个或多个字符,默认情况下为制表符‘\t’。
参数LINES TERMINATED BY ‘value’:设置每行数据结尾的字符,可以为单个或多个字符,默认值为‘\n’。

案例1:
在这里插入图片描述查看my.ini中secure-file-priv=的路径,导入导出需要指定到该路径。
也可用命令行查看:
在这里插入图片描述 select * from book.readerinfo into outfile ‘D:/idea/mysql-8.0.17-winx64/uploads/readerinfo.txt’;
在这里插入图片描述添加参数,FIELDS TERMINATED BY ‘value’和参数LINES TERMINATED BY ‘value:
mysql> select * from book.readerinfo into outfile ‘D:/idea/mysql-8.0.17-winx64/uploads/readerinfo1.txt’
-> fields terminated by’,’
-> lines terminated by ‘\r\n’;

secure-file-priv=NULL 表示不允许mysql导入导出
secure-file-priv=‘’ 表示mysql不对导入导出的路径做限制

使用MYSQLdump命令导出文本文件

MYSQLdump创建一包含创建表的CREATE TABLE语句的tablename.sql文件和一个包含其数据的tablename.txt文件。
语法格式:
mysqldump -T path -u root -p dbname [tables][OPTIONS]
[OPTIONS]为可选参数项,比如
fileds-terminated-by=value:设置字段之间的分割字符,可以为单个或多个字符,默认情况下为表符‘\t’。
lines-terminated-by=value:设置每行数据结尾的字符,可以为单个或多个字符,默认情况下‘\n’;
案例3:
在这里插入图片描述以管理者身份打开命令行:
C:\WINDOWS\system32>mysqldump -T “D:/idea/mysql-8.0.17-winx64/uploads” -uroot -p book bookcategory
在这里插入图片描述

使用mysql命令导出文本文件

语法格式:
mysql -u root -p --execute=’'select语句" dbname>filename.txt
案例4:
在这里插入图片描述C:\WINDOWS\system32>mysql -uroot -p --execute=“select * from readerinfo” book>“D:/idea/mysql-8.0.17-winx64/uploads/readerinfo2.txt”

数据表的导入

使用LOAD DATA INFILE 方式导入文本文件

语法格式:
LOAD DATA INFILE ‘filename.txt’ INTO TABLE tablename[OPTIONS][IGNORE number LINES]
[OPTIONS]为可选参数项,比如
参数FIELDS TERMINATED BY ‘value’:设置字段之间的分割字符,可以为单个或多个字符,默认情况下为表符‘\t’。
LINES TERMINATED BY ‘value’:设置每行数据结尾的字符,可以为单个或多个字符,默认情况下‘\n’;
案例5:
在这里插入图片描述mysql> load data infile “D:/idea/mysql-8.0.17-winx64/uploads/readerinfo.txt” into table book.readerinfo;

使用MYSQLimport命令导入文本文件

语法格式:
mysqlimport -u root -p dbname filename.txt [OPTIONS]
[OPTIONS]为可选参数项,比如
fileds-terminated-by=value:设置字段之间的分割字符,可以为单个或多个字符,默认情况下为表符‘\t’。
lines-terminated-by=value:设置每行数据结尾的字符,可以为单个或多个字符,默认情况下‘\n’;
案例6:
使用MYSQLimport命令将readerinfo.txt 文件中的数据导入到book数据库中的readerinfo表中。

C:\WINDOWS\system32>mysqlimport -uroot -p book “D:/idea/mysql-8.0.17-winx64/uploads/readerinfo.txt”

发布了19 篇原创文章 · 获赞 2 · 访问量 1231

猜你喜欢

转载自blog.csdn.net/weixin_38377637/article/details/100181736