在数据库方面有两个方向。一个是数据库管理员(Database Administrator)简称DBA,一个是数据库开发工程师(Database Developer),
其中:
1) 数据库开发工程师的主要职责是设计和开发数据库管理系统和数据库应用软件系统,侧重于软件研发;
2) DBA 的主要职责是运维和管理数据库管理系统,侧重于运维管理。
不知道小伙伴们有没有想往这方面发展的,当然作为一个开发人员,对数据库还是要有一定的了解的,今天我们就来初步了解一下 MySQL 数据库的权限管理。
首先 MySQL 是一个多用户的数据库系统,按权限,用户可以分为两种:root 用户,超级管理员,和由 root 用户创建的普通用户。
用户的权限要经过两个阶段:
第一阶段:有没有权限链接到数据库,就是用户名和密码拉~
第二阶段:有没有权限对数据库进行操作如:(create , drop , select , delete等等。)
第一阶段
对于第一阶段服务器判断用户有没有权限链接依据的是三个参数:
host:你从哪儿来?
user:你是谁?
password:你的密码是多少?
登录连接命令。
mysql -h(host) -u(user) -p(password) -P(port)
其中 host 指的是你安装数据库的服务器的 IP 地址,user 是用户名,password 是你的用户密码,-P 是你要连接的端口号。
现在我们来试一下:
现在我已经链接上我的数据库了(只有一台电脑)。
现在我们来查一下MySQL数据库。
用户的信息都存储在 mysql 的 user 表中。
select host,user,password from user;
host : 访问数据库客户端机器的IP地址。localhost 与 127.0.0.1 :代表本地
user : 用户名称
password :密码
我们看到在 localhost 中没有用户名和密码也可以登陆数据库
我们来试一下,现在成功登陆了呦~
我们没有用户名和密码就登陆了我们的数据库,出于对数据的安全性考虑,我们来删除这个空的用户,删除的时候要注意用户的权限,我们要登陆 root 用户进行删除。现在这个空的用户就被删除了。
第二个阶段
create user 命令
create user : 用于创建 MySQL 账户
语法:
create user username identified by 'pwd';
现在我们来创建一个账号 user1,
eg: create user user1 identified by '1234';
% :表示所有 IP 地址客户端都可以访问。现在这边只是有一个账号,没有账号权限,我们试着登陆一下~
登陆成功,但是看不到我们的数据库(图上的两个一个是我们的默认数据库,一个是练习数据库),现在我们来给账号分配权限。
grant 命令
grant : 命令用来管理访问权限,也可以用来创建和删除账号。
语法:
grant [权限1,权限2,...] on *.* to user@host identified by 'password';
常见的权限:
all, create, drop, insert, update, delete,select
把所有的权限给账号名为 user,密码为 password 的账号
grant all privileges on *.* to user@host identified by 'password';
现在我们来给账号 user1 分配权限。
eg:
grant all privileges on *.* to 'user1'@'localhost' identified by '1234';
flush privileges; 冲刷权限
现在我们再来登陆试一下。就可以看见我们数据库中的内容了
revoke 命令
revoke :用来收回权限
语法:
revoke [权限1,权限2,...] on *.* from user@host;
收回用户user在host上访问数据库的所有权限。
revoke all privileges on *.* from user@host;
现在我们收回 user1 的所有权限。
revoke all privileges on . from 'user1'@'localhost';
登陆 user1 来看一下~我们的权限都被收回了。
drop user 命令
drop user :用来删除闲置或没用的 MySQL 账户。
语法:
drop user user@host;
我们来回收账号 user1
drop user 'user1'@'localhost';
现在我们的账号 user1 就被删除了。