MySQL用户与权限管理

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ

MySQL权限系统表

MySQL的权限相关信息主要存储于mysql.user,mysql.db,mysql.host,mysql.table_priv和mysql.column_priv。这些表被称为grant
tables。

用户管理


CREATER USER 命令创建用户


创建用户首先必须拥有mysql数据库的全局CREATE USER 权限,或INSERT权限。对于每个账户,CREATE
USER会在没有权限的mysql.user表中创建一条记录。若账户不存在,则出现错误。使用自选的IDENTIFIED BY子句设置用户密码。

该命令创建的用户无任何特别权限,仅拥有初始USAGE权限。

CREATE USER user [IDENTIFIED
BY [PASSWORD ‘PASSWORD‘]][,
user [IDENTIFIED BY [PASSWORD ‘PASSWORD‘]]]

DROP USER命令删除用户


闲置账户应该被删除。DROP USER
不能自动关闭任何打开的用户对话;而且,若用户有打开的对话,此时取消用户,则命令不会生效,直到用户对话被关闭后才生效。一旦对话被关闭,用户也被取消,此用户再次登录时将失败。

DROP USER user[,user]...

RENAME USER 重命名用户


当旧账户不存在或新账户已存在,则会出现错误。

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

权限管理


要为某个用户授权使用GRANT命令,要去除某个用户的权限使用REVOKE命令。还有一种暴力的方法即直接更新grant tables系统表。

当给某个用户授权时,需要指定用户名与主机。格式:‘username‘@‘hostname‘。

授权时,若仅指定用户名,则MySQL会自动认为是对‘username‘@‘%‘授权。要去除某个用户的权限,也需要指定主机。

查看用户的权限


方法一:


SHOW GRANTS FOR ‘username‘@‘hostname‘

方法二:

查询grant tables的权限信息。

GRANT和REVOKE命令


GRANT和REVOKE命令用来管理访问权限,也可以用来创建和删除用户,但在MySQL5.0.2可以利用GREATE USER和DROP
USER命令更容易实现。

GRANT和REVOKE命令对于谁可以操作服务器及其内容的各个方面提供了多程度的控制,从谁可以关闭服务器,到谁可以修改特定表字段中的信息都能控制。

普通用户的权限权限应用于描述

SELECT表,列允许用户从表中选择行(记录)

INSERT表,列允许用户在表中插入新行

UPDATE表,列允许用户修改现存表里行中的值

DELETE表允许用户删除现存表的行

INDEX表允许用户创建和拖动特定表索引

ALTER表允许用户改变现存表的结构。例如,可添加列、重命名列或表、修改列的数据类型

CREATE数据库,表允许用户创建新数据库或表。如果在GRANT中指定了一个特定的数据库或表,他们只能够创建该数据库或表,即他们必须首先删除(Drop)它

DROP数据库,表允许用户拖动(删除)数据库或表

管理员权限权限描述

CREATE TEMPORARY TABLES允许管理员在CREATE TABLE语句中使用TEMPORARY关键字

FILE允许将数据从文件读入表,或从表读入文件

LOCK TABLES允许使用LOCK TABLES语句

PROCESS允许管理员查看属于所有用户的服务器进程

RELOAD允许管理员重新载入授权表、清空授权、主机、日志和表格

REPLICATION CLIENT允许在复制主机(Master)和从机(Slave)上使用SHOW STATUS

REPLICATION SLAVE允许复制从服务器连接到主服务器

SHOW DATABASES允许使用SHOW DATABASES语句查看所有的数据库列表。没有这个权限,用户只能看到他们能够看到的数据库

SHUTDOWN允许管理员关闭MySQL服务器

SUPER允许管理员关闭属于任何用户的线程

特别的权限权限描述

ALL(或ALL PREVILEGES)授予所有权限

USAGE不授予权限。这将创建一个用户并允许他登录,但不允许其他操作,如update/select 等。

授权层级


MySQL中的权限分为5个级别:

全局层级(Global Level)

数据库层级(Databases Level)

表层级(Table Level)

列层级(Column Level)

子程序层级(Routine Level)

权限生效


权限信息数据量小,且访问频繁,所以每次启动MySQL时,都会将所有权限信息都加载到内存中,并保存在几个特定的结构里。使用GRANT命令,REVOKE命令,CREATER
USER命令,DROP USER命令修改用户相关权限时,在修改grant tables的同时,也会修改内存中的权限信息。

每次手动修改了相关权限表之后,都需要执行“FLUSH PRIVILEGES”命令。所以尽量使用GRANT,REVOKE,CREATER USER,DROP
USER等命令。

MySQL数据库服务器启动时,以及使用GRANT与REVOKE语句的时,服务器会自动读取grant表。同时,可以手动修改它们。

当手动更新它们时,MySQL服务器将不会注意到他们已经被修改了。必须向服务器指出已经对权限进行修改,有3种方法可以实现这个任务。可以在MySQL命令提示符下(必须以管理员身份进入)键入命令:


flush privileges;

或在shell环境下使用

?





1

mysqladmin flush-privileges

?





1

mysqladmin reload 

此后当数据库再次连接的时候,系统将检查全局级别权限;当下一条命令被执行时,将检查数据库级别的权限;而表级别和列级别权限权限将在用户下次请求的时候被检查。

设置账户密码


可以用mysqladmin命令指定密码:


mysqladmin -u user_name -h host_name password "newpwd" 

mysqladmin重设服务器host_name,且用户名为user_name用户的密码,新密码为"newpwd"。

set password命令设置用户密码:

只有特定用户(可以更新mysql数据库的用户,如root)身份登录,才可以修改其他用户密码。


set password for ‘jeffrey‘@‘%‘ = password(‘biscuit‘);

若不以匿名用户连接,则可以省略for子句而修改自己的密码:


set password = password(‘biscuit‘);

在全局级别下使用GRANT USAGE语句(在*.*)指定某个账户的密码,而不影响账户当前权限:


GRANT USAGE ON *.* TO ‘jeffrey‘@‘%‘ IDENTIFIED BY ‘biscuit‘;

在创建新账户时建立密码,要为password列提供一个具体值:


mysql -u root mysql
INSERT INTO user(Host,User,Password) VALUES (‘%‘,‘jeffrey‘,PASSWORD(‘biscuit‘));
FLUSH PRIVILEGES;

更改已有账户的密码,要应用UPDATE语句来设置password列值。


mysql -u root mysql
UPDATE user SET Password =PASSWORD(‘bagel‘) WHERE Host = ‘%‘ AND User =‘francis‘;
FLUSH PRIVILEGES;

设置密码时,使用SET PASSWORD,INSERT,UPDATE设定密码,使用PASSWORD()函数对密码进行加密。

若使用GRANT..IDENTIFIED BY语句或mysqladmin
password命令设置密码,这些命令会对密码自动加密,不需要使用PASSWORD()函数。

安全


在管理级别,一定不能将mysql.user表的访问权限授予任何非管理账户。

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ

时间: 2024-10-29 13:21:38

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,所以我的解读仅限于这个版本.

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

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

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

1  概述 MySQL用户和权限管理 遵循最小权限授权法则,保证系统的安全性 本文主要讲解关于用户MySQL用户和权限管理的相关概念和操作 3  MySQL权限类别 库级别:对某些库拥有对应的权限 表级别:对某些表拥有相关权限 字段级别: 管理类:如super 程序类:如调用一个函数,或者执行一个函数 管理类: CREATE USER:创建用户账号 RELOAD:重新载入 LOCK TABLES:锁定表 REPLICATION CLIENT, REPLICATION SLAVE:复制功能 SHU

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

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

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