权限管理
对于用户的管理,mysql将用户的信息以表的形式存储起来了,就在mysql数据库下的user表中,我们可以通过以下方式来创建用户和分配权限。
创建一个用户:
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
-- 主机名:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
通俗来说,这里的用户名,主机名和密码分别表示你是谁、从哪里来和你的验证。
- eg:
CREATE USER 'Ara'@'%' IDENTIFIED BY '123456';
-- 创建一个用户名为Ara 密码为123456 并且可以通过任意远程主机登录的用户
查看某个用户的权限:
SELECT * FROM mysql.user WHERE USER = 用户名;
这个就完全是查询mysql中存储用户信息的表的sql语句。
- eg:
-- 查看用户名为Ara的用户详细信息(包括权限)
SELECT * FROM mysql.user WHERE USER='Ara';
具体权限
权限名 | mysql.user表中的字段名 | 权限级别 | 含义 |
---|---|---|---|
ALTER | Alter_priv | 表 | 更改表 |
ALTER ROUTINE | Alter_routine_priv | 存储过程 | 更改存储过程 |
CREATE | Create_priv | 数据库、表或者索引 | 创建数据库、表或索引 |
CREATE ROUTINE | Create_routine_priv | 存储过程 | 创建存储过程 |
CREATE TABLESPACE | Create_tablespace_priv | 表 | 创建共享表权限 |
CREATE TEMPORARY TABLES | Create_tmp_table_priv | 服务器管理 | 创建临时表权限 |
CREATE USER | Create_user_priv | 服务器管理 | 创建用户 |
CREATE VIEW | Create_view_priv | 视图 | 创建视图 |
DELETE | Delete_priv | 表 | 删除数据权限 |
DROP | Drop_priv | 数据库或表 | 删除数据库或表权限 |
EVENT | Event_priv | 事件 | 事件的增删查改权限 |
EXECUTE | Execute_priv | 存储过程 | 执行存储过程的权限 |
FILE | File_priv | 服务器主机上的文件访问 | 文件访问权限 |
GRANT | Grant_priv | 用户 | 赋予权限选项 |
INDEX | Index_priv | 表 | 索引权限 |
INSERT | Insert_priv | 表 | 插入数据权限 |
LOCK TABLES | lock_tables_priv | 服务器管理 | 锁表权限 |
PROCESS | Process_priv | 服务器管理 | 查看进程权限 |
REFERENCES | References_priv | 表 | 创建外键的权限 |
RELOAD | Reload_priv | 服务器管理 | 执行刷新命令的权限 |
REPLICATION CLIENT | Repl_client_priv | 服务器管理 | 复制客户端 |
REPLICATION SLAVE | Repl_slave_priv | 服务器管理 | 复制从机 |
SELECT | Select_priv | 表 | 查询权限 |
SHOW DATABASES | Show_db_priv | 数据库 | 查看所有数据库的权限 |
SHOW VIEW | Show_view_priv | 视图 | 查看视图权限 |
SHUTDOWN | Shutdown_priv | 服务器管理 | 关闭数据库权限 |
SUPER | Super_priv | 服务器管理 | 执行kill线程的权限 |
TRIGGER | Trigger_priv | 触发器 | 创建触发器 |
UPDATE | Update_priv | 表 | 更新权限 |
给某个用户授权:
-- 权限之间用,号分隔 权限列表这里可以用ALL表示全部
-- 数据库名和表名可以使用* 表示全部的数据库或者全部的表
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'该用户的主机地址';
通俗来说就是,我们要为从哪里来(用户主机地址)的谁(用户名)赋予操作数据库什么地方(数据库名和表名)的什么操作权限(权限列表)。
- eg:
-- 给Ara用户授予在jwgl数据库的所有表上可修改,创建临时表和删除数据库和表的权限
GRANT ALTER, CREATE TEMPORARY TABLES, DROP ON `jwgl`.* TO 'Ara'@'%';
移除某个用户的权限:
-- 权限之间用,号分隔 权限列表这里可以用ALL表示全部
-- 数据库名和表名可以使用* 表示全部的数据库或者全部的表
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'该用户的主机地址';
通俗理解就是,移除从哪里来(用户主机地址)的谁(用户名)的操作哪里(数据库名和表名)的什么权限(权限列表)。
- eg:
-- 移除Ara用户创建临时表和删除数据库和表的权限
REVOKE CREATE TEMPORARY TABLES, DROP ON `jwgl`.* FROM 'Ara'@'%';
数据库简单备份
备份是个好习惯,万一哪天手误,把啥重要的数据删除了,要是没有备份,后果是可想而知的,下面博主展示用命令行来备份数据库(使用这个命令的前提是配置了mysql环境变量哦)。
格式:
mysqldump -h主机名 -u用户名 -p密码 数据库名 表名 >导出路径
注意:
- 如果要同时导出一个数据库下的多张表,表名可以有多个,之间用空格隔开即可
- 如果需要导出整个数据库,忽略表名即可
eg:
mysqldump -hlocalhost -uroot -prootroot jwgl user >D:/temp/user.sql
导出成功后,对应文件夹下就会出现备份的sql文件,我们可以使用记事本打开它,会发现里面就是sql语句。
当然我们备份出来肯定是为了防止意外情况,下面博主展示如何恢复:
-- 1.先进入某个数据库
use 数据库名;
-- 2.执行sql文件
source 文件路径;
eg:
use jwgl;
source D:/temp/user.sql
这样就表示恢复成功了。