MySQL数据库 管理与维护

目录

数据备份与还原

数据的备份

数据的还原

用户管理

user表

创建用户

删除用户

修改用户密码

权限管理

授予权限

查看权限

收回权限


数据备份与还原

数据的备份

mysqldump命令:能够将数据库导出成SQL脚本,可以直接在命令行窗口执行不用登录数据库

①备份单个数据库
mysqldump -u username -p password dbname [tbname1 [bname2...]] > filename.sql

username为用户名,password为登录密码

dbname为需要备份的数据库

tbname为数据库中需要备份的数据表,可以指定一张或多张表,数据表名称之间使用空格隔开

filename.sql为保存的备份文件,可以使用绝对路径保存

②备份多个数据库
mysqldump -u username -p password --database dbname1 [dbname2...] > filename.sql

dbname为需要备份的数据库,需要至少指定一个数据库,多个数据库名称之间使用空格隔开

③备份所有数据库
mysqldump -u username -p password --all-databases > filename.sq

备份文件中包含CREATE DATABASE语句和USE语句

备份文件内容:

mysqldump的版本号、MySQL的版本号、主机名称、备份的数据库名称等

-- 字符开头的语句是SQL语言的注释

/*! 开头,*/结尾的语句是可执行的MySQL语句

数据的还原

使用mysql命令和source命令,执行备份文件中的SQL语句将数据库数据还原

mysql命令:在命令行窗口中使用mysql命令不需要登录数据库
mysql -u username -p password [dbname] < filename.sql

如果备份文件中不包含创建和选择数据库的语句,则需要先手动创建和选择将接收还原数据的数据库

source命令:在命令行窗口中使用source命令需要先登录数据库
source filename.sql

只需要指定备份文件的名称和文件路径

用户管理

MySQL是一个多用户数据库管理系统

|---------------|-------------|
| 用户(大致分为) | 权限 |
| root用户(超级管理员) | 拥有所有权限 |
| 普通用户 | 只拥有被授予的指定权限 |

MySQL在安装时,会自动创建mysql数据库,主要用于维护数据库的用户及权限的控制与管理,包含数据表user、db、host等

user表

user表中保存了所有用户信息,根据功能可分为四个字段:用户字段、权限字段、安全字段和资源控制字段

①用户字段:存储了用户连接MySQL数据库时需要输入的信息

②权限字段:针对所有数据库,数据类型为ENUM(值只有N或Y,默认值都为N)

③安全字段:包含安全连接、身份验证和密码相关等字段

④资源控制字段:用于限制用户对服务器资源的使用

创建用户

使用CREATE USER语句创建用户
*CREATE USER 'username'@'hostname' [IDENTIFIED BY [PASSWORD]'password'

,'username'@'hostname' \[IDENTIFIED BY \[PASSWORD\]'password'\]\]...* username为新创建用户名称 hostname为主机名(localhost:仅允许本地连接,%:允许从任意主机连接) *IDENTIFIED BY* 用于设置用户的密码 \[PASSWORD\]为使用哈希值设置密码 可以同时创建多个用户,多个用户之间使用逗号分隔 **注意:**如果添加的用户已经存在,执行CREATE USER语句会报错 使用GRANT语句创建用户(8.0版本前) *GRANT privileges ON database.table TO 'username'@'hostname' \[IDENTIFIED BY \[PASSWORD\]'password'

,'username'@'hostname' \[IDENTIFIED BY \[PASSWORD\]'password'\]\]...* privileges为该用户具有的权限信息,database.table为新用户的权限范围表 username为新用户名称,hostname为主机名,password为新用户密码 ### 删除用户 使用DROP USER语句删除用户 *DROP USER 'username'@'hostname' \[,username'@'hostname' \];* 可以同时删除多个用户,多个用户之间使用逗号分隔 使用DELETE语句删除用户,不仅可以删除普通表中的数据,还可以删除mysql.user表中的数据 *DELETE FROM mysql.user WHERE Host='hostname' AND User='username';* mysql.user指定要操作的表,WHERE指定条件语句 host和user都是mysql.user表的字段,可以确定唯一的一条记录 ### 修改用户密码 使用mysqladmin命令 *mysqladmin -u username \[-h hostname\] -p password new_password* username为要修改密码的用户名 \[-h hostname\]用于指定对应的主机名,默认为localhost -p password用于指定要修改的内容为密码 new_password为新设置的密码 使用ALTER USER语句 *ALTER USER 'username'@'hostname' IDENTIFIED by new_password;* 使用SET语句 *SET PASSWORD=new_password;* 使用UPDATE语句(不建议使用) *UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='username' and Host='hostname';* 注意:使用UPDATE语句修改密码后,需要使用FLUSH PRIVILEGES命令重新加载权限表 ## 权限管理 ### 授予权限 使用GRANT语句:授予用户权限 *GRANT 权限类型\[(字段列表)\]\[,权限类型\[(字段列表)\]\] ON 权限级别 TO 'username'@'hostname' \[,'username'@'hostname'\]... \[WITH with_option\]* 权限类型包括: 数据权限(select、update、delete、insert、show database、show view、process) 结构权限(drop、create、alter、index等) 管理权限(create user、create option等) 权限级别包括: 全局级别:\*.\* 当前未选择数据库 \* 表示全局级别;选择数据库 \* 表示数据库级别 数据库级别:数据库名.\* 数据表级别:数据库名.数据表名 \[WITH with_option\]包含五个with_option取值: 将自己的权限授予其他用户:GRANT OPTION 设置每小时最多可以执行多少次查询:MAS_QUERIES_PRE_HOUR count 设置每小时最多可以执行多少次更新:MAS_UPDATES_PRE_HOUR count 设置每小时最大的连接数量:MAS_CONNECTIONS_PRE_HOUR count 设置每个用户最多可以同时建立的连接数量:MAS_USER_CONNECTIONS -将所有权限授予用户 grant all PRIVILEGES on 'username'@'hostname'; ### 查看权限 表权限可以在mysql.tables_priv中查看,列权限可以在mysql.columns_priv中查看 使用SHOW GRANTS语句 *SHOW GRANTS FOR 'username'@'hostname';* ### 收回权限 使用REVOKE语句:收回指定用户的指定权限 *REVOKE 权限类型\[(字段列表)\]\[,权限类型\[(字段列表)\]\] ON 权限级别 FROM 'username'@'hostname' \[,'username'@'hostname'\]...* 字段列表表示权限作用的字段,默认作用于整个数据表

相关推荐
JH30732 分钟前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
数据知道18 分钟前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql
麦聪聊数据2 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
未来之窗软件服务2 小时前
数据库优化提速(四)新加坡房产系统开发数据库表结构—仙盟创梦IDE
数据库·数据库优化·计算机软考
Goat恶霸詹姆斯3 小时前
mysql常用语句
数据库·mysql·oracle
大模型玩家七七3 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
曾经的三心草3 小时前
redis-9-哨兵
数据库·redis·bootstrap
明哥说编程3 小时前
Dataverse自定义表查询优化:D365集成大数据量提速实战【索引配置】
数据库·查询优化·dataverse·dataverse自定义表·索引配置·d365集成·大数据量提速
xiaowu0804 小时前
C# 拆解 “显式接口实现 + 子类强类型扩展” 的设计思想
数据库·oracle
讯方洋哥4 小时前
HarmonyOS App开发——关系型数据库应用App开发
数据库·harmonyos