数据库 之 MySQL用户和权限管理

1  概述

MySQL用户和权限管理 遵循最小权限授权法则,保证系统的安全性

本文主要讲解关于用户MySQL用户和权限管理的相关概念和操作

3  MySQL权限类别

库级别:对某些库拥有对应的权限

表级别:对某些表拥有相关权限

字段级别:

管理类:如super

程序类:如调用一个函数,或者执行一个函数

管理类:

CREATE USER:创建用户账号

RELOAD:重新载入

LOCK TABLES:锁定表

REPLICATION CLIENT, REPLICATION SLAVE:复制功能

SHUTDOWN:关闭数据库服务器

FILE:从文件中加载内容装入

SHOW DATABASES:查看数据库

PROCESS :和进程相关

SUPER:不便归类的其他权限,仅次于root的拥有其他管理功能的用户

程序类:组合为12中权限(3*4)

FUNCTION:函数

PROCEDURE:存储过程

TRIGGER:触发器

操作:对以上的三个程序类都拥有四个操作CREATE,ALTER,DROP,EXECUTE

库和表级别:

CREATE,ALTER,DROP:对库和表创建,修改和删除

INDEX:索引

CREATE VIEW:创建视图的语句的权限

SHOW VIEW:查看视图的权限

GRANT:能够把自己获得的权限生成一个副本转赠给其它用户;转赠的权限不能回收,一般不建议授予这个权限

OPTION:其他权限相关的选项

数据操作:

表:

INSERT/DELETE/UPDATE/SELECT

字段:

SELECT(col1,col2,...)

UPDATE(col1,col2,...)

INSERT(col1,col2,...)

注意,delete是整行删除,因此不能用于删除字段

所有权限:ALL, ALL PRIVILEGES

元数据数据库(数据字典):mysql库,保存了当前系统的相关数据,如当前数据库上对象的定义

MySQL用户管理

用户账号组成:[email protected]

user:账户名称;

host:此账户可通过哪些客户端主机请求创建连接线程;

%:任意长度的任意字符;

_:任意单个字符;

mysql默认会将登录的ip解析成主机名,比如有主机ip为192.168.1.71的主机名是CentOS7A.sunny.com,那么在mysql服务器上授权的是[email protected]%的账号访问,没有授权CentOS7A.sunny.com,当mysql服务器没有关闭名称解析时,192.168.1.71要远程连接mysql服务器,会被识别为账号[email protected],由于没有授权[email protected]登录mysql服务器,因此不能登录mysql服务器

授权主机名和ip是不等同的,

skip_name_resolve=ON    #关闭名称解析功能

创建用户:

CREATE USER  'user'@'host' [IDENTIFIED BY [PASSWORD] 'password'] [,'user'@'host' [IDENTIFIED BY [PASSWORD] 'password']...]

重命名:RENAME USER

RENAME USER old_user TO new_user[, old_user TO new_user] ...

删除用户:没有回收站,除非有备份,否则删掉就不能恢复

DROP USER 'user'@'host' [, 'user'@'host'] ...

让MySQL重新加载授权表:用update更改数据要手动执行flush

FLUSH PRIVILEGES

授权

db, host, user三个级别的上进行授权

mysql库中权限相关的表:tables_priv, column_priv, procs_priv, proxies_priv

语法如下

GRANT  priv_type [(column_list)] [, priv_type [(column_list)]] ...ON [object_type] priv_level TO user_specification [, user_specification] ... [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}] [WITH with_option ...]

相关解释如下

[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]:基于ssl连接

object_type:

TABLE:表

| FUNCTION:函数

| PROCEDURE:过程

priv_level:权限级别

*表示所有库所有表

| *.*表示所有者的所有表

| db_name.*表示指定库的所有表

| db_name.tbl_name表示指定库的指定表

| tbl_name表示所有库的特定表

| db_name.routine_name:存储历程之一

ssl_option:

SSL

| X509 格式的证书

| CIPHER 'cipher':指明加密算法

| ISSUER 'issuer':要求证书颁发者为指定的颁发者

| SUBJECT 'subject':证书里的其他信息

with_option:以下数值为0表示不限制

GRANT OPTION:表示得到的权限可以转赠

| MAX_QUERIES_PER_HOUR count:一个账号每小时最多发起多少次的操作

| MAX_UPDATES_PER_HOUR count:一小时内发起更新的次数

| MAX_CONNECTIONS_PER_HOUR count:一小时发起多少次短连接请求

| MAX_USER_CONNECTIONS count:一个账号可以同时发起多少次的连接。

查看授权:SHOW GRANTS;查看自己的权限

SHOW GRANTS [FOR 'user'@'host']

取消授权:REVOKE

REVOKE  priv_type [(column_list)][, priv_type [(column_list)]] ...

ON [object_type] priv_level

FROM  'user'@'host' [,  'user'@'host'] ...

REVOKE ALL PRIVILEGES, GRANT OPTION

FROM user [, user] ...

例子

授权账号'test'@'192.168.1.%'

MariaDB [sunny]> grant select on sunny.students to 'test'@'192.168.1.%' identified by "Pass1234";

额外授权是追加,直接授权即可,如再增加delete权限

MariaDB [sunny]> grant delete on sunny.students to 'test'@'192.168.1.%' identified by "Pass1234";

授权对应字段拥有相关权限

如授权test账号对表sunny.students的字段major拥有update的权限,则针对其他字段就没有update权限

MariaDB [sunny]> grant update(major) on sunny.students to 'test'@'192.168.1.%' identified by "Pass1234";

回收权限

MariaDB [(none)]> revoke update(major) on sunny.students from 'test'@'192.168.1.%';

原文地址:http://blog.51cto.com/ghbsunny/2060565

时间: 2024-12-14 18:12:00

数据库 之 MySQL用户和权限管理的相关文章

第15章 mysql 用户、权限管理

2015-10-24 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013 [3] 范德兰斯.MySQL开发者SQL权威指南 [M].北京:机械工业出版社,2008 [4] Forta.MySQL必知必会 [M].北京:人民邮电出版社,2009 [5] Chapter 6 Security [6] 5.7. MySQL访问权限系统

mysql 用户和权限管理

1.用户连接到 mysql,并作各种查询,对用户权你是谁限的检查1.对于 mysql 你有没有权限连接上来,必须满足下面三个参数:1.你从哪里来?:host 2.你是谁? :user 1.新增一个用户: 命令格式:grant [权限1,权限2,权限3] on *.* to [email protected] identified by password 2.查看一个用户的权限:select * from user where user=root \G; 3.回收权限:revoke [权限] on

第01章 mySQL用户和权限管理v1

韩立刚老师视频教学网站 http://www.91xueit.com 韩老师QQ458717185 第01章 MySQL用户和权限管理 mySQL权限控制通过两步控制,能不能连接(验证用户身份),能执行什么操作(验证用户权限). 验证用户身份,需要验证,连接mySQL的计算机的IP地址或计算机名称,用户账户和密码.验证过程如下: 管理mySQL用户 查看mySQL用户账户 mySQL用户存储在mysql数据库的user表,该表在mySQL服务启动时自动加载到内存,控制用户的登录. [[email

Mysql 用户,权限管理的几点理解。

前两天项目数据库要移植到mysql,为此临时抓了几天很久没用的mysql. 公司的数据库比较简单,从oracle迁移到mysql很简单,但是,中间的权限管理让我感觉既简单又复杂..简单是因为网上关于mysql用户,权限管理的帖子很多, 按照上面的做,基本上能解决遇到的问题.复杂是因为如果考虑的特殊的场景,权限管理会让很多新手蛋疼的不要不要的. mysql权限的基础我在这里就不讲了,大家一艘一大把,我这里主要就我的理解在前人基础上做一些解读.公司用的是mysql5.5,所以我的解读仅限于这个版本.

【转】mysql 用户及权限管理 小结

转自:https://www.cnblogs.com/SQL888/p/5748824.html mysql 用户及权限管理 小结 MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命令可以为 MySQL 创建一个新用户: 1 CREATE USER username IDENTIFIED BY 'password'; 新用户创建完成,但是此刻如果以

Linux运维 第四阶段 (五) MySQL用户和权限管理

Linux运维 第四阶段 (四)MySQL用户和权限管理 1.相关概念: >mysql用户: 类似VSFTPD虚拟用户: 密码,自己独有的加密机制,PASSWORD函数: 用户名@主机: 用户名16字符以内,主机(主机名.IP.网络地址.通配符(%,_): --skip-name-resolve(跳过名称解析,可提高用户连接速度) 账号是用来认证的: >RENAME USER  'old_name'@'host'  TO  'new_name'@'host;  (重命名用户) >权限,授

MySQL用户和权限管理

MySQL用户权限表 MySQL的认证是“用户”加“主机”而权限是访问资源对象,MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库中,由mysql_install_db脚本初始化.存储账户权限信息表主要有:user,db,tables_priv,columns_priv,procs_priv这五张表(5.6之前还有host表,现在已经把host内容整合进user表),五张表其含义分别是: user表 user表时MySQL中最重要的一个权限表,记录允许连接到服务器的

(转)Mysql用户与权限管理

========对于ROOT用户的密码操作(更改用户密码)======== 刚刚安装完的Mysql,只一有个root用户,密码为空,而且只能在本机登录! 为root加上密码xxx123:./bin/mysqladmin -u root password xxx123或写成./bin/mysqladmin -uroot password xxx123 加下密码之后,在本进行进入mysql:./bin/mysql -uroot -p 更改root的密码由xxx123改为yy1234:./bin/my

MySQL 用户与权限管理

MySQL权限系统的主要功能是证实连接到一台给定主机的用户,而且赋予该用户在数据库上的相关DML,DQL权限.MySQL存取控制包括2个阶段,一是server检查是否同意你连接:二是假定你能连接,server检查你发出的每一个请求.看你是否有足够的权限实施它. 本文主要描写叙述MySQL权限系统相关的用户创建.授权.撤销权限等等. 1.获取有关权限管理的帮助 [email protected][(none)]> help Account Management For more informati