MySQL_管理与维护

版权声明:由于作者水平有限,文中难免有误,欢迎各位业界同仁斧正! https://blog.csdn.net/UserPython/article/details/83004341

数据库的用户管理

MySQL的用户管理

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

MySQL用户管理的相关内容

权限表

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

各个权限表的作用

  • user表是MySQL中最重要的一个权限表,记录允许连接到服务器的账户信息,里面的权限是全局级的
  • db表和host表是MySQL数据中非常重要的权限表,db表中存储了用户地某个数据库的操作权限
  • host表中存储了某个主机对数据库的操作权限
  • tables_priv表用来对表设置操作权限
  • columns_priv表用来对表的某一列设置权限
  • procs_priv表可以对存储过程和存储函数设置操作权限

账户管理

新建普通用户

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

使用CREATE USER语句创建新用户

  • 语法格式:

CREATE USER “user”@“host” [IDENTIFIED BY “password”];

需求:使用CREATE USER创建一个用户,用户名是rose,密码是rosepwd,主机名是localhost

在这里插入图片描述

GRANT语句

  • create user语句可以用来创建账户,通过该语句可以在user表中添加一条新的记录,但是create user语句创建的新用户没有任何权限,还需要使用grant语句赋值用户权限
  • 而grant语句不仅可以创建新用户,还可以在创建的同时对用户授权

使用Grant语句创建新用户

  • 语法格式:

GRANT privileges ON db.table TO “user”@“host” [IDENTIFIED BY “password”];

  • db.table:db表示数据库,table表示数据表

需求:使用GRANT语句创建一个新的用户testuser,密码为testpwd,并授予用户对所有数据表的SELECT和UPDATE权限

。。。MySQL8.0不知道为嘛执行不成功

删除普通用户

  • 在MySQL数据库中,可以使用DROP USER语句删除用户,也可以直接通过DELETE语句从MySQL.user表中删除对应的记录来删除用户

使用DROP USER 语句删除用户

  • 语法格式:

DROP USER user[, user];

例:使用DROP USER删除账户"rose"@"localhost":
DROP USER "rose"@"localhost";

使用DELETE语句删除用户

  • 语法格式:

DELETE FROM mysql.user WHERE host = ‘hostname’ and user = ‘username’;

数据库用户的权限管理

权限管理

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

授权

  • 授权就是为了某个用户授予权限
  • MySQL中可以使用GRANT语句为用户授予权限

给用户授予权限

  • 语法格式:

GRANT priv_type ON db.table to ‘user’@‘host’ [IDENTIFIED BY ‘password’];

  • priv_type:可以是具体的某个权限,如select、insert、update等,也可以是授予全部权限如:all privileges

需求:使用grant语句给已经创建好的用户rose授予对book数据库所有表插入、查询的权限

在这里插入图片描述

查看用户的授权
语法格式:

SHOW GRANTS FOR “user”@“host”;

在这里插入图片描述

收回权限

  • 收回权限就是撤销已经赋予用户的某些权限
  • 语法格式:

REVOKE privilege ON db.table from “user”@“host”;

在这里插入图片描述

数据库的日志管理

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

MySQL的日志分类

  • 错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题
  • 查询日志:记录了MySQL的所有用户操作,包括启动和关闭服务、执行查询和更新语句等
  • 二进制日志:记录所有更改数据的语句
  • 慢查询日志:记录所有执行时间超时long_query_time的所有查询或不使用索引的查询

启动和设置错误日志

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

[mysqld]
log-error=file_name

查看错误日志

  • MySQL的错误日志是以文本形式存储的,可以使用文本编辑直接查看MySQL的错误日志

  • 如果不知道日志文件的存储路径,可以使用show variables语句查询错误日志的存储路径

    showvariables like "log_error";
    

删除错误日志

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

数据库的备份和恢复

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

使用MYSQLdump命令备份

  • MySQLdump是MySQL提供的一个非常有用的数据库备份工具,MySQLdump命令执行时,可以将数据库备份成一个文本文件
  • mysqldump备份数据库语句的基本语法格式如下:

mysqldump -u userName -h host -p password
dbname [tbname [, tbname2, … ]] > BackupName.sql

需求:
1、使用mysqldump命令备份数据库图书管理系统中的所有表
2、备份book数据库中的readerinfo表
3、使用mysqldump备份多个数据库,比如备份book和mytest数据库

在这里插入图片描述

数据恢复

使用mysql命令恢复,语法格式如下:

mysql -u userName -p [dbname] < backup.sql

需求:使用mysql命令将上面的备份文件导入到数据库中

在这里插入图片描述

如果已经登录MySQL服务器,还可以使用source命令导入SQL文件,语法如下:

source backup.sql

在这里插入图片描述

数据表的导出

数据表的导入和导出

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

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

语法格式:

SELECT columnsList FROM table [WHERE condition] INTO OUTFILE “fileName” [OPTIONS];

  • [OPTIONS] : 为可选参数项,比如:
  • 参数FIELDS TERMINATED BY “value” : 设置字段之间的分割字符value,可以为单个或多个字符,默认情况下制表符’\t’
  • 参数LINES TERMINATED BY ‘value’ : 设置每行数据结尾的字符value,可以为单个或多个字符,默认值为’\n’

需求:将图书管理系统中的readerinfo表中的记录导出到文本文件

在这里插入图片描述

在这里插入图片描述

使用mysqldump命令导出文本文件

  • mysqldump创建一个包含创建表的CREATE TABLE语句的tablename.sql文件和一个包含其数据的tablename.txt文件
  • 语法格式:

mysqldump -T path(目标目录) -u root -p dbname [tables] [OPTIONS]

  • [OPTIONS] 为可选参数选项,比如:
  • –fileds-terminated-by=value : 设置字段之间的分割字符value,可以为单个或多个字符,默认情况下为"\t"
  • –lines-terminated-by=value : 设置每行数据结尾的字符value,可以为单个或多个字符,默认为"\n"

使用MySQL命令导出文本文件

语法格式:

mysql -u root -p --execute=“SELECT语句” dbname > fileName.txt

在这里插入图片描述

数据表的导入

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

语法格式:

LOAD DATA INFILE “filename.txt” INTO TABLE tablename [OPTIONS] [IGNORE number LINES]

  • [OPTIONS] : 为可选参数选项,比如:
  • 参数FIELDS TERMINATED BY ''value" : 设置字段之间的分隔符value,可以为单个或多个字符,默认为制表符"\t"
  • 参数LINES TERMINATED BY “value” :设置每行数据结尾的字符value,可以为单个或多个字符,默认值为"\n"

在这里插入图片描述

使用mysqlimport命令导入文本文件

语法格式:

mysqlimport -u root -p dbname filename.txt [OPTIONS]

  • [OPTIONS] : 为可选参数选项,比如:
  • –fileds-terminated-by=’'value" : 设置字段之间的分隔符value,可以为单个或多个字符,默认为制表符"\t"
  • –lines-terminated-by=“value” :设置每行数据结尾的字符value,可以为单个或多个字符,默认值为"\n"

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/UserPython/article/details/83004341