MySQL(四)用户与权限管理
用户与权限管理
用户管理
MySQL用户分为普通用户和root用户,提供了许多语句来管理包括登录、退出MySQL服务器、创建用户、删除用户、密码管理和权限管理等内容。
登录MySQL服务器
mysql -h hostName|hostIP -P port -u userName -p DataBaseName -e "SQL语句"
创建用户
查看当前用户:
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
4 rows in set (0.00 sec)
创建命令:
create user ''@'' identified by ''
mysql> create user 'hikaru'@'%' identified by 'password';
Query OK, 0 rows affected (0.04 sec)
mysql> use mysql;
Database changed
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | hikaru |
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
5 rows in set (0.00 sec)
mysql数据库的user表是由host和user组成的联合主键
所以再创建一个限制本地连接的用户也是ok的:
mysql> create user
-> 'hikaru'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec) mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | hikaru |
| % | root |
| localhost | hikaru |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
6 rows in set (0.00 sec)
修改用户
mysql> update user set user='tod4' where user='hikaru' and host='localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | hikaru |
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | tod4 |
+-----------+------------------+
6 rows in set (0.00 sec)
相当于直接对表的记录进行修改,属于DDL语句,需要刷新权限:
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
删除用户
Drop
mysql> drop user 'tod4';
ERROR 1396 (HY000): Operation DROP USER failed for 'tod4'@'%'
mysql> drop user 'tod4'@'localhost';
Query OK, 0 rows affected (0.00 sec)
Delete(DDL语句需要刷新权限)
delete from user where user = xxx and host = xxx;
flush privileges;
不推荐使用Delete删除用户,因为创建的用户不仅在user表中也在其他表中添加了记录,因此只删除user表会有信息残留
修改用户密码
修改自己的密码
① 使用Alter语句修改普通用户密码(推荐)
ALTER USER USER() IDENTITY BY 'new_password';
② 使用set语句修改普通用户密码
SET PASSWORD='new_password'
修改其他用户的密码
① 使用Alter语句修改普通用户密码(推荐)
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password'
② 使用set语句修改普通用户密码
SET PASSWORD FOR 'username'@'host' IDENTIFIED BY 'new_password'
权限管理
允许做MySQL赋予权限以内的事情,不可以越界。比如只可以执行select、只允许从某一台机器上登录MySQL等等。
权限列表
mysql> show privileges;
+-------------------------+---------------------------------------+-------------------------------------------------------+
| Privilege | Context | Comment |
+-------------------------+---------------------------------------+-------------------------------------------------------+
| Alter | Tables | To alter the table |
| Alter routine | Functions,Procedures | To alter or drop stored functions/procedures |
| Create | Databases,Tables,Indexes | To create new databases and tables |
| Create routine | Databases | To use CREATE FUNCTION/PROCEDURE |
| Create temporary tables | Databases | To use CREATE TEMPORARY TABLE |
| Create view | Tables | To create new views |
| Create user | Server Admin | To create new users |
| Delete | Tables | To delete existing rows |
| Drop | Databases,Tables | To drop databases, tables, and views |
| Event | Server Admin | To create, alter, drop and execute events |
| Execute | Functions,Procedures | To execute stored routines |
| File | File access on server | To read and write files on the server |
| Grant option | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess |
| Index | Tables | To create or drop indexes |
| Insert | Tables | To insert data into tables |
| Lock tables | Databases | To use LOCK TABLES (together with SELECT privilege) |
| Process | Server Admin | To view the plain text of currently executing queries |
| Proxy | Server Admin | To make proxy user possible |
| References | Databases,Tables | To have references on tables |
| Reload | Server Admin | To reload or refresh tables, logs and privileges |
| Replication client | Server Admin | To ask where the slave or master servers are |
| Replication slave | Server Admin | To read binary log events from the master |
| Select | Tables | To retrieve rows from table |
| Show databases | Server Admin | To see all databases with SHOW DATABASES |
| Show view | Tables | To see views with SHOW CREATE VIEW |
| Shutdown | Server Admin | To shut down the server |
| Super | Server Admin | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc. |
| Trigger | Tables | To use triggers |
| Create tablespace | Server Admin | To create/alter/drop tablespaces |
| Update | Tables | To update existing rows |
| Usage | Server Admin | No privileges - allow connect only |
+-------------------------+---------------------------------------+-------------------------------------------------------+
31 rows in set (0.00 sec)
| 权限分布 | 可能设置的权限 |
|---|---|
| 表权限 | |
| 列权限 | |
| 过程权限 |
查看授权
看自己的:
show grants;
看别人的:
show grants for '...'@'...';
授予权限
授予权限分为两种:角色授予用户和直接给用户授权
直接给用户授权
grant select, update on dbtest.* to 'test'@'%';
grant all privileges on *.* to '';
all privileges并不意味着和root等同的权限,如赋予别人权限的权限就没有给
需要使用WITH GRANT OPTION选项
收回权限
revoke all privileges on *.* from '...'@'...'
权限表
有缘再补。。。
️访问控制
有缘再补。。
角色管理 8.0新特性
创建角色
create role 'rolename'@'host';
不写登录主机名默认%
给角色赋予权限
grant * on * to 'rolename'@'host';
查看角色权限
show grants for 'rolename'@'host';
收回角色权限
revoke * on * from 'rolename'@'host';
删除角色
drop role 'rolename';
向用户授予角色
grant 'rolename'@'host' to 'username'@'host';
Mysql创建了角色之后都是没有被激活的,也就是不能用,必须要手动激活才能获得相应的权限
激活角色
激活角色有两种方式
①set default role
set default role all to 'username'@'host';
②将active_all_roles_on_login设置为ON
show variables like 'activate';
set global active_all_roles_on_login ON;
撤销角色
revoke 'rolename'@'host' from 'username'@'host';
MySQL(四)用户与权限管理的更多相关文章
- MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置
文章目录 mysql配置文件 二进制日志log-bin 错误日志log-error 数据文件 两系统 Myisam存放方式 innodb存放方式 如何配置 mysql的用户与权限管理 MySQL的用户 ...
- MySQL数据库用户和权限管理
一.视图 视图:VIEW,虚表,保存有实表的查询结果,在视图插入的内容都会存入表中.创建方法: CREATE VIEW view_name [(column_list)] AS select_st ...
- Mysql新增用户,权限管理
MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant selec ...
- mysql数据库用户和权限管理记录
一.MySQL用户的基本说明: 1.1 用户的基本结构MySQL的用户:用户名@主机 ■用户名:16个字符以内■主机:可以是主机名.IP地址.网络地址等主机名:www.111cn.net,localh ...
- mysql创建用户和权限管理
一 权限管理 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete.update.grant等操作.那么一般情况在公司之后DBA工程师会创建 ...
- 【mysql】用户和权限管理
1.用户管理 相关命令如下 命令 描述 备注 create user zhang3 identified by '123123'; 创建名称为zhang3 的用户,密码设为123123: sele ...
- MySQL用户与权限管理
执行mysql select 查询报错: SELECT command denied to user 'root'@'localhost' for table "xxx" 问题原因 ...
- Mysql 用户和权限管理
用户和权限管理: 语法 grant 权限 on 数据库.数据表 to '用户' @ '主机名'; 例:给 xiaogang 分配所有的权限 grant all on *.* to 'xiaogang' ...
- MySQL/MariaDB数据库的用户和权限管理
MySQL/MariaDB数据库的用户和权限管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.元数据数据库(mysql) 系统授权表(均在mysql数据库中): db hos ...
- MySQL基础篇(07):用户和权限管理,日志体系简介
本文源码:GitHub·点这里 || GitEE·点这里 一.MySQL用户 1.基础描述 在数据库的使用过程中,用户作为访问数据库的鉴权因素,起到非常重要的作用,安装MySQL时会自动生成一个roo ...
随机推荐
- cadence-ADE反相器仿真
Cadence-ADE仿真 连接电路 鼠标移至schematic绘制区域,单击放置inv i键继续添加gnd, vdc(3.3V), vpulse(0-3.3V,Period 1us,Pulse wi ...
- 装了google浏览器不代表就能使用google搜索
第一步:装google浏览器 第二步:连接外网(FQ的本质就是连接一个服务器) 第三步:输入网址google.com 跳转到此页面即成功 现在的想法是
- Sentinel介绍与使用
https://blog.csdn.net/noaman_wgs/article/details/103328793
- Object.definedProperty和Proxy的对比
Object.definedProperty和Proxy经常用来实现对象的劫持 Object.definedProperty是vue2.x拦截对象属性变化的方法,再结合订阅-发布者模式和观察者模式实现 ...
- Servlet与JSP学习笔记
一.Servlet 注册 web.xml里边注册Servlet ,定义格式如下: <servlet> <servlet-name>helloworld</servlet- ...
- bigNumber.js的简单使用
sum 计算传入的参数和,参数类型可以是 String,Number // 两数之和 var x = BigNumber.sum('11', 23) x.toNumber() // 34 // 多个参 ...
- C Ⅷ
数组 int number[100]; //这个数组可以放100个数 int x; int cnt = 0; double sum = 0; scanf("%d", & ...
- Spyglass CDC工具使用(五)
最近一直在搞CDC (clock domain crossing) 方面的事情,现在就CDC的一些知识点进行总结. 做CDC检查使用的是Spyglass工具.以下内容转载自:Spyglass之CDC检 ...
- .net 生成Excel并保存
void SaveQuestionToExcel(List<Question> datas, string path) { using (Workbook workbook = new H ...
- mac安装mysql5.6默认密码修改
前言: 每次安装mysql都被烦的要死,痛并思痛记下此篇文章: 参考: https://blog.csdn.net/u010377383/article/details/82688250 https: ...