数据库优化 学习笔记
一、账户管理
-
在生产环境下操作数据库时,绝对不可以使用 root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行操作,主要的操作就是数据的 crud.
-
MySQL账户体系:根据账户所具有的权限的不同,MySQL的账户可以分为以下几:
- 服务实例级账号:,启动了一个mysqld,即为一个数据库实例;如果某用户如root,拥有服务实例级分配的权限,那么该账号就可以删除所有的数据库、连同这些库中的表;
- 数据库级别账号: 对特定数据库执行增删改查的所有操作;
- 数据表级别账号: 对特定表执行增删改查等所有操作;
- 字段级别的权限: 对某些表的特定字段进行操作;
- 存储程序级别的账号: 对存储程序进行增删改查的操作.
-
账户的操作主要包括创建账户、删除账户、修改密码、授权权限等.
二、授予权限
需要使用实例级账户登录后操作,以 root 为例,主要操作包括: 查看所有用户 , 修改密码 , 删除用户。
2.1、查看所有用户
- 所有用户及权限信息存储在
mysql数据库的user表中 - 查看
user表的结构
desc user;
- 主要字段说明:
Host表示允许访问的主机User表示用户名authentication_string表示密码,为加密后的值
select host,user,authentication_string from user;
2.2、创建账户、授权账户
- 需要使用实例级账户登录后操作,以
root为例 - 常用权限主要包括:
create、alter、drop、insert、update、delete、select - 如果分配所有权限,可以使用
all privileges
2.3、创建账户 & 授权
语法:
-- 其中 "访问主机" , 是指使用什么地址进行访问
grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';
- 示例1
创建一个laowang的账号,密码为123456,只能通过本地访问, 并且只能对jd数据库中的所有表进行读操作
-- step1:使用root登录
mysql -uroot -p
-- 回车后写密码,然后回车
-- step2:创建账户并授予所有权限
grant select on jd.* to 'laowang'@'localhost' identified by '123456';
-- 说明:
-- 可以操作python数据库的所有表,方式为: jd.*
-- 访问主机通常使用 百分号% 表示此账户可以使用任何ip的主机登录访问此数据库
-- 访问主机可以设置成 localhost或具体的ip,表示只允许本机或特定主机访问
-- step3:刷新权限
flush privileges;
-- step4:查看用户有哪些权限
show grants for laowang@localhost;
-- step5:退出root的登录
quit
-- step6:使用laowang账户登录
mysql -ulaowang -p
-- 回车后写密码,然后回车
-- step7:对数据库进行操作测试
-- 查看数据库, 发现只能看到 系统默认的 和 运行操作的 数据库
show databases;
-- 进行可以操作的数据库, 尝试对标进行操作, 测试结果
- 示例2
创建一个laoli的账号,密码为12345678,可以任意电脑进行链接访问, 并且对jd数据库中的所有表拥有所有权限
grant all privileges on jd.* to "laoli"@"%" identified by "12345678"
本文介绍了MySQL数据库的账户管理,强调在生产环境中避免使用root账户,建议创建特定账户并授予特定权限。账户类型包括服务实例级、数据库级别、数据表级别和字段级别。授权操作包括创建账户、删除账户、修改密码和授权权限。详细讲述了如何查看用户、创建新账户并进行权限分配。
867

被折叠的 条评论
为什么被折叠?



