MySQL 账户管理(了解)
程序员文章站
2022-03-03 20:01:43
...
数据库优化 学习笔记
一、账户管理
-
在生产环境下操作数据库时,绝对不可以使用 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"
上一篇: pycharm深度学习入门案例:训练一个图像分类器
下一篇: MySQL 分区表