MYSQL访问控制系统、用户账户管理、数据表维护、数据库维护

MySQL 访问控制系统

当客户端连接到服务器时,MySQL 访问控制有两个阶段:
连接验证:连接到 MySQL 数据库服务器的客户端需要有一个有效的用户名和密码。此外,客户端连接的主机必须与 MySQL 授权表中的主机相匹配。默认情况下,mysql 授权的主机只有本机,只允许本地连接,远程连接需要修改授权列表。
请求验证:当连接成功建立后,对于客户端发出的每个语句,MySQL 会检查客户端是否具有足够的权限来执行该特定语句。 MySQL 能够检查数据库,表和字段级别的权限。
用户账户管理
查询数据库当前用户信息,代码如下所示:

-- 使用 mysql 数据库
use mysql;
-- 查询用户信息
select * from user;

创建一个新用户 dbadmin,密码为 pwd123,代码如下所示:

create user dbadmin@localhost identified by 'pwd123';
select * from user;
-- 删除用户
drop user 'dbadmin'@'localhost';

语法解析:identified by 用于指定密码,@localhost 表示该用户只能从本机登录,如果希望用户可以从任意主机连接,可以使用@’%’。
查看新用户 dbadmin 的权限,代码如下所示:

show grants for dbadmin@localhost;

给新用户 dbadmin 授予超级管理员权限,代码如下所示:

-- 授予全部权限
grant all on *.* to 'dbadmin'@'localhost' with grant option;
-- 查询权限
show grants for dbadmin@localhost;

查询结果表明 dbadmin 用户拥有所有数据库的所有表的权限,with grant option 表示允许用户向其他用户授权,这样 dbadmin 就拥有了超级管理员权限。也可以授予用户部分权限,例如:

CREATE USER rfc IDENTIFIED BY 'mypasswd';
GRANT SELECT, UPDATE, DELETE ON test.* TO rfc;

语法解析:上面代码表示创建一个 rfc 账号,密码为 mypasswd,该用户只能操作 test 数据库中的表,并且只能查询、修改和删除表中的数据,如果用 rfc 用户在 test 数据库创建表就会报错。
在 test 数据库建表,代码如下:

create table tb
(
id int primary key,
name varchar(20)
)

从运行结果可以看到,rfc 的权限不能够在 test 数据库创建表,但是可以查询,例如,执行下面的代码:

select * from users;

撤销权限
撤销 rfc 用户的 select 权限,代码如下:

revoke select on test.* from rfc;
show GRANTS for rfc;

注意:
要从用户帐户撤销权限,必须具有 GRANT OPTION 权限和要撤销的权限;
注意授权是 grant…to…,而撤销权限是 revoke…from…。
因此上面的代码需要先用 admin 账户连接 mysql 才能执行,撤销权限后,再用 rfc 账户连接到 mysql,进行查询操作,代码如下:

select * from users;

数据表维护
查看 test 数据库中的所有表和视图,代码如下所示:

use test;-- 使用 test 数据库
show tables;-- 显示表

Show tables 命令可以查看指定数据库中的所有表和视图,如果需要显示类型可以使用 show full tables,例如:

use test;-- 使用 test 数据库
show full tables;-- 显示表

也可以加上查询条件,例如:

use test;-- 使用 test 数据库
show tables like '%t%';-- 显示表

分析 test 数据库中的 sx_target 表,代码如下所示:

ANALYZE TABLE sx_target;

对 test 数据库中的 goods 表进行碎片整理,代码如下所示:

OPTIMIZE table goods;

检查 test 数据库中的 goods 表的完整性,代码如下:

check table goods;

假设 test 数据库中的 goods 表有错误,修复 goods 表,代码如下

REPAIR table goods;

备份数据库语法如下:

mysqldump -u [username] –p[password] [database_name] > [dump_file.sql]

参数解释:
[username]:有效的 MySQL 用户名;
[password]:用户的有效密码。请注意,-p 和密码之间没有空格;
[database_name]: 要备份的数据库名称;
[dump_file.sql]: 要生成的转储文件。
备份 test 数据库到 test.sql 文件,命令行操作如下所示:
操作如下
如果只想备份数据库结构而不需要备份数据,那么只需要添加一个选项–no-data 来告诉 mysqldump 只需要导出数据库结构即可,例如:

mysqldump -u root -padmin --no-data test > D:\test.sql

如果要将多个数据库备份到一个数据文件,代码如下:

mysqldump -u[username] -p[password] --databases [dbname1 dbname2] > filename.sql
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FirstTalent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值