用户与权限管理


用户管理

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(四)用户与权限管理的更多相关文章

  1. MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

    文章目录 mysql配置文件 二进制日志log-bin 错误日志log-error 数据文件 两系统 Myisam存放方式 innodb存放方式 如何配置 mysql的用户与权限管理 MySQL的用户 ...

  2. MySQL数据库用户和权限管理

    一.视图 视图:VIEW,虚表,保存有实表的查询结果,在视图插入的内容都会存入表中.创建方法: CREATE VIEW view_name [(column_list)] AS select_st ...

  3. Mysql新增用户,权限管理

    MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant selec ...

  4. mysql数据库用户和权限管理记录

    一.MySQL用户的基本说明: 1.1 用户的基本结构MySQL的用户:用户名@主机 ■用户名:16个字符以内■主机:可以是主机名.IP地址.网络地址等主机名:www.111cn.net,localh ...

  5. mysql创建用户和权限管理

    一 权限管理 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete.update.grant等操作.那么一般情况在公司之后DBA工程师会创建 ...

  6. 【mysql】用户和权限管理

    1.用户管理 相关命令如下 命令 描述 备注 create user zhang3 identified by '123123'; 创建名称为zhang3 的用户,密码设为123123:   sele ...

  7. MySQL用户与权限管理

    执行mysql select 查询报错: SELECT command denied to user 'root'@'localhost' for table "xxx" 问题原因 ...

  8. Mysql 用户和权限管理

    用户和权限管理: 语法 grant 权限 on 数据库.数据表 to '用户' @ '主机名'; 例:给 xiaogang 分配所有的权限 grant all on *.* to 'xiaogang' ...

  9. MySQL/MariaDB数据库的用户和权限管理

    MySQL/MariaDB数据库的用户和权限管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.元数据数据库(mysql) 系统授权表(均在mysql数据库中): db hos ...

  10. MySQL基础篇(07):用户和权限管理,日志体系简介

    本文源码:GitHub·点这里 || GitEE·点这里 一.MySQL用户 1.基础描述 在数据库的使用过程中,用户作为访问数据库的鉴权因素,起到非常重要的作用,安装MySQL时会自动生成一个roo ...

随机推荐

  1. Spring 核心容器 IOC

    目录 1. BeanFactory 2. BeanDefinition 3. BeanDefinitionReader 4 . Web IOC 容器初体验 一 .BeanFactory Spring ...

  2. 1008.Django模型基础03

    一.关系表的数据操作 关系表中的数据操作 查看数据库中的表结构 一对多表关系数据的添加: 1. 第一种方式就是跟之前一样,用传参的方法添加,需要注意的是外键的值必须是关联表中已存在的值: 2. 第二种 ...

  3. Rsync+NFS实战,解决NFS单点问题

    1.环境准备 主机 ⻆⾊ ip web01 NFS客户端.RSYNC客户端 172.16.1.7 nfs NFS服务端.RSYNC客户端 172.16.1.31 backup NFS服务端.RSYNC ...

  4. 通过Rdp实现连接远程桌面

    unit UnitMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Fo ...

  5. loadrunner入门(关联)

    左右边界:提取第一个id web_reg_save_param_ex(                 "ParamName=Id",         "LB=//OK[ ...

  6. 通过cpolar内网穿透 https://blog.csdn.net/CpolarLisa/article/details/128148698

    远程办公:通过cpolar内网穿透,远程桌面控制家里公司内网电脑_Cpolar Lisa的博客-CSDN博客 https://blog.csdn.net/CpolarLisa/article/deta ...

  7. day2Java程序基础

    Java程序基础 Java程序基本结构 一个程序的基本单位是class,class是关键字 类名要求: 类名必须以英文字母开头,后接字母,数字和下划线的组合 习惯以大写字母开头 public除了修饰类 ...

  8. 在Vim编辑器中查找选定文本

    按照任意选定文本查找: 1. 进入visiual模式选定文本, 按 y 键复制: 2. 按 / 键进入查找模式: 3. 按 Ctrl + r 打开vim寄存器: 4. 按 " 键将寄存器内容 ...

  9. vite不能用@做为路径的解决方法

    vite创建vue3后,发现原来用@做为路径的不能用了,报错信息是 Internal server error: Failed to resolve import "@ 在网上查了一下资料, ...

  10. 基于Kubernetes(k8s)部署Dubbo+Nacos服务

    一.说明 本文介绍基于 Kubernetes(k8s) 环境集成阿里云 私有镜像仓库 来部署一套 Dubbo + Nacos 的微服务系统,并使用 Kubernetes DNS 以及 port-for ...