搜尋
首頁資料庫mysql教程mysql数据库用户和权限管理记录_MySQL

bitsCN.com

一、MySQL用户的基本说明:

1.1 用户的基本结构
MySQL的用户:用户名@主机

■用户名:16个字符以内
■主机:可以是主机名、IP地址、网络地址等
主机名:www.111cn.net,localhost

IP:192.168.0.1

网络地址:172.16.0.0/255.255.0.0

主机还支持通配符:%和_

172.16.%.%

%.111cn.net
注意:对于包含了主机名的用户,MySQL会尝试反解析主机名,此时可能会造成连接非常慢,如果反解析的IP地址与连接点的地址不同,还可能出现无法连接的情况。因此,为了加快连接并避免出现解析问题,可以在my.cnf文件中加入如下一行加速连接:

--skip-name-resolve
MySQL用户的密码有MySQL内部的password()函数管理。

1.2 授权表:
MySQL用户只是用于认证,而用户具有的权限有相应的授权机制实现。首先MySQL用户授权的,主要为如下刘张表:

user: Contains user accounts, global privileges, and other non-privilege columns.
user: 用户帐号、全局权限

db: Contains database-level privileges.
db: 库级别权限

host: Obsolete.
host: 废弃

tables_priv: Contains table-level privileges.
tables_priv: 表级别权限

columns_priv: Contains column-level privileges.
columns_priv: 列级别权限

procs_priv: Contains stored procedure and function privileges.
procs_priv: 存储过程和存储函数相关的权限

proxies_priv: Contains proxy-user privileges.
proxies_priv: 代理用户权限
在MySQL数据库服务启动后,这六张表会被直接加载到内存,而今后所有的认证都直接从内存中这六张表获取,而不是去读取磁盘。

1.3 各授权表的说明:
■user表范围列决定是否允许或拒绝到来的连接。对于允许的连接,user表授予的权限指出用户的全局(超级用户)权限。这些权限适用于服务器上的all数据库。
■db表范围列决定用户能从哪个主机存取哪个数据库。权限列决定允许哪个操作。授予的数据库级别的权限适用于数据库和它的表。
■tables_priv和columns_priv表类似于db表,但是更精致:它们在表和列级应用而非在数据库级。授予表级别的权限适用于表和所有它的列。授予列级别的权限只适用于专用列。
■procs_priv表适用于保存的程序。授予程序级别的权限只适用于单个程序。
管理权限(例如RELOAD或SHUTDOWN等等)仅在user表中被指定。这是因为管理性操作是服务器本身的操作并且不是特定数据库,因此没有理由在其他授权表中列出这样的权限。事实上,只需要查询user表来决定你是否执行一个管理操作。

FILE权限也仅在user表中指定。它不是管理性权限,但你在服务器主机上读或写文件的能力与你正在存取的数据库无关。

当mysqld服务器启动时,将授权表的内容读入到内存中。你可以通过FLUSH PRIVILEGES语句或执行mysqladmin flush-privileges或mysqladmin reload命令让它重新读取表。

二、MySQL提供的权限
账户权限信息被存储在mysql数据库的user、db、host、tables_priv、columns_priv和procs_priv表中。在MySQL启动时时,服务器将这些数据库表内容读入内存。

GRANT和REVOKE语句所用的涉及权限的名称显示在下表,还有在授权表中每个权限的表列名称和每个权限有关的上下文。

权限
 列
 上下文
 
CREATE
 Create_priv
 数据库、表或索引
 
DROP
 Drop_priv
 数据库或表
 
GRANT OPTION
 Grant_priv
 数据库、表或保存的程序
 
REFERENCES
 References_priv
 数据库或表
 
ALTER
 Alter_priv
 表
 
DELETE
 Delete_priv
 表
 
INDEX
 Index_priv
 表
 
INSERT
 Insert_priv
 表
 
SELECT
 Select_priv
 表
 
UPDATE
 Update_priv
 表
 
CREATE VIEW
 Create_view_priv
 视图
 
SHOW VIEW
 Show_view_priv
 视图
 
ALTER ROUTINE
 Alter_routine_priv
 保存的程序
 
CREATE ROUTINE
 Create_routine_priv
 保存的程序
 
EXECUTE
 Execute_priv
 保存的程序
 
FILE
 File_priv
 服务器主机上的文件访问
 
CREATE TEMPORARY TABLES
 Create_tmp_table_priv
 服务器管理
 
LOCK TABLES
 Lock_tables_priv
 服务器管理
 
CREATE USER
 Create_user_priv
 服务器管理
 
PROCESS
 Process_priv
 服务器管理
 
RELOAD
 Reload_priv
 服务器管理
 
REPLICATION CLIENT
 Repl_client_priv
 服务器管理
 
REPLICATION SLAVE
 Repl_slave_priv
 服务器管理
 
SHOW DATABASES
 Show_db_priv
 服务器管理
 
SHUTDOWN
 Shutdown_priv
 服务器管理
 
SUPER
 Super_priv
 服务器管理
 

三、权限更改何时生效
当mysqld启动时,所有授权表的内容被读进内存并且从此时生效。

当服务器注意到授权表被改变了时,现存的客户端连接有如下影响:

■表和列权限在客户端的下一次请求时生效。
■数据库权限改变在下一个USE db_name命令生效。
■全局权限的改变和密码改变在下一次客户端连接时生效。
如果用GRANT、REVOKE或SET PASSWORD对授权表进行修改,服务器会注意到并立即重新将授权表载入内存。

如果你手动地修改授权表(使用INSERT、UPDATE或DELETE等等),你应该执行mysqladmin flush-privileges或mysqladmin reload告诉服务器再装载授权表,否则你的更改将不会生效,除非你重启服务器。

如果你直接更改了授权表但忘记重载,重启服务器后你的更改方生效。这样可能让你迷惑为什么你的更改没有什么变化!

 

四、MySQL用户账户管理
4.1 创建用户与授权:
4.1.1 创建用户:CREATE USER
基本语法:

CREATE USER username@host [IDENTIFIED BY 'password']
示例:

mysql> CREATE USER barlow@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.34 sec)
4.2.2 创建用户并授权:GRANT
基本语法:

GRANT priv_type[(column_list)] ON [object_type] priv_level TO username@'%' [IDENTIFIED BY [PASSWORD] 'password'];
■priv_type:ALL或上面的权限表格中的权限。
■priv_level:  *| *.*| db_name.*| db_name.tbl_name| tbl_name| db_name.routine_name
示例:

mysql> GRANT CREATE,INSERT,SELECT,UPDATE,DELETE ON testdb.* TO barlow@'%';
Query OK, 0 rows affected (0.21 sec)

mysql> SHOW GRANTS FOR 'barlow'@'%';
+-------------------------------------------------------------------------------------------------------+
| Grants for barlow@%                                                                                   |
+-------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'barlow'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON `testdb`.* TO 'barlow'@'%'                            |
+-------------------------------------------------------------------------------------------------------+
2 rows in set (0.01 sec)


通过上图实例可以看到,用户只拥有明确授权的权限。

4.3 用户管理
4.3.1 删除用户:
基本语法:

DROP USER 'username'@'host'
4.3.2 重命名用户:
基本语法:

RENAME USER old_name TO new_name
4.3.3 收回已授予的用户权限
基本语法:

REVOKE  priv_type [(column_list)]   [, priv_type [(column_list)]] ... ON [object_type] priv_level  FROM user [, user] ...
示例:

mysql> mysql> REVOKE INSERT ON testdb.* FROM  barlow@'%';
Query OK, 0 rows affected (0.01 sec)


从上图可以看出,barlow@'%'用户已经没有了INSERT权限。                       

4.3.4 修改用户密码:
方法一:SET PASSWORD
基本语法:

SET PASSWORD FOR 'user_name'@'host' = PASSWORD('new_password');
示例:

mysql> SET PASSWORD FOR 'barlow'@'%' = PASSWORD('987654');
Query OK, 0 rows affected (0.07 sec)
说明:管理员可以修改任何用户的密码,但普通用户只能修改自己的密码。

用户修改自己的密码语法(也可以使用上述语法修改):

 SET PASSWORD = PASSWORD('new_password');方法二:直接update mysql.user表的password字段实现修改密码:基本语法:mysql> use mysql

mysql> UPDATE user SET Password = PASSWORD('new_password') WHERE User='user_name' AND Host='host';

mysql> FLUSH PRIVILEGES;
示例:

mysql> use mysql

Database changed

mysql> UPDATE user SET Password = PASSWORD('redhat') WHERE User='barlow' AND Host='%';

Query OK, 1 row affected (0.03 sec)

Rows matched: 1  Changed: 1  Warnings: 0

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.08 sec)
4.4 找回root用户的密码:
如果root用户的密码忘记后,可以通过如下方法找回:

■停止mysqld服务
■启动mysqld_safe时传递两个参数:--skip-grant-tables --skip-networking
■启动mysqld服务
■使用直接update mysql.user表的password字段实现修改root用户密码
示例:

停止服务,修改mysqld_safe传递参数:

[root@localhost ~]# service mysqld stop

Shutting down MySQL........ SUCCESS!

[root@localhost ~]# vim /etc/init.d/mysqld

 


登录mysql修改密码:

[root@localhost ~]# service mysqld start

Starting MySQL....................... SUCCESS!

[root@localhost ~]# mysql            ##注意,这里已经不需要登录密码了

Welcome to the MySQL monitor.  Commands end with ; or g.

Your MySQL connection id is 1

Server version: 5.6.13 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> UPDATE mysql.user SET Password = PASSWORD('123456') WHERE User='root';

Query OK, 0 rows affected (0.00 sec)

Rows matched: 3  Changed: 0  Warnings: 0

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.03 sec)
恢复mysqld_safe传递参数:

[root@localhost ~]# service mysqld stop

Shutting down MySQL........ SUCCESS!

[root@localhost ~]# vim /etc/init.d/mysqld

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &

[root@localhost ~]# service mysqld start

Starting MySQL...... SUCCESS!

[root@localhost ~]# mysql   ##再次登录,提示需要密码

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

[root@localhost ~]# mysql -u root –p   ##使用新密码正常登录

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or g.

Your MySQL connection id is 2

Server version: 5.6.13 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql>


更多详细内容请查看:http://www.111cn.net/database/mysql/56298.htm

bitsCN.com
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
cmd怎么查看局域网所有ipcmd怎么查看局域网所有ipFeb 20, 2023 pm 02:22 PM

cmd查看局域网所有ip的方法:1、按“Win+R”快捷键打开“运行”窗口;2、在“运行”窗口中输入“CMD”后,按回车键;3、在打开的“命令提示符”界面中,输入命令“arp -a”并按回车键;4、从返回结果就可以看到本地局域网中的所有与本机通信的计算机IP地址。

主机的域名和主机的ip地址两者之间的关系是什么主机的域名和主机的ip地址两者之间的关系是什么Jan 14, 2021 pm 06:02 PM

主机的域名和主机的ip地址两者之间的关系是:一个IP地址对应多个域名。IP地址用数字化形式来对计算机网络中的主机进行网络标识,域名用字符化形式来对计算机网络中的主机进行网络标识。在Internet中,一个域名之内能够对应一个IP地址,但是一个IP地址可以被多个域名所对应。

PHP实现IP地址查询功能PHP实现IP地址查询功能Jun 22, 2023 pm 11:22 PM

随着网络的快速发展,IP地址成为了网络通信中不可或缺的一环。在进行网络安全监测、流量管理、电商广告定向投放等方面,IP地址的信息非常重要。因此,为了方便用户查询IP地址/域名信息,许多网站提供了IP地址查询功能。本篇文章将介绍如何用PHP实现IP地址查询功能,供读者参考。一、何为IP地址?IP地址(InternetProtocolAddress)即网络协

在因特网上的每一台主机都有唯一的地址标识称为什么在因特网上的每一台主机都有唯一的地址标识称为什么Aug 22, 2022 pm 03:24 PM

每一台主机都有唯一的地址标识称为“IP地址”。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个唯一的逻辑地址,以此来屏蔽物理地址的差异。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。

ip地址是由多少位二进制数组成ip地址是由多少位二进制数组成Mar 01, 2023 pm 04:35 PM

ip地址是由32或128位二进制数组成。IP地址是IP协议提供的一种统一的地址格式,IP地址分两种:1、ipv4地址,由32位二进制数组成,用点分十进制表示,每八位划分,也就是四个0~255的十进制数;2、ipv6地址,由128位二进制数组成,用点分十六进制表示,每八位划分,也就是十六个0x00~0xff的十六进制数。

ip地址后面/24是什么意思ip地址后面/24是什么意思Nov 23, 2022 am 11:36 AM

ip地址后面的“/24”表示掩码位是24位的。IP地址是四个十进制数组成的,相当于32位二进制;而ip地址后面斜杠加具体数字是一种用CIDR形式表示的一个网段,或者说子网。ip地址后“/24”指32位二进制的前24位用"1"表示,后面8位用0表示,即“11111111 11111111 11111111 000000”;将其转化为十进制,就是“255.255.255.0”。

Java如何获取客户端的IP地址?Java如何获取客户端的IP地址?Apr 26, 2023 pm 05:25 PM

一、前言环境:jdk1.8+idea2019.3+Windows10二、摘要项目开发中,在日常处理操作日志时,基本都会通过aop切面来实现用户操作日志的记录,但涉及到记录操作日志,想必肯定会有一项是基本都会参考记录的,那就是操作人的客户端ip地址,日后查"脏"也方便。那么问题来了。具体怎么获取客户端的ip地址啊?哈哈哈,这就是我这期的教学内容,若是有的小伙伴知道怎么获取,那么我要表扬你,但是实现思路是否与我有同异?所以你也可以尝试看下bug菌是如何实现的吧。接下来,我就开始教

ip地址为什么和所在地不一样ip地址为什么和所在地不一样Nov 21, 2022 pm 01:52 PM

ip地址和所在地不一样的原因:1、运营商IP分配错误会导致IP真实所在地与腾讯IP数据库匹配到的IP所在地不同;2、使用代理服务器导致的;3、非官方版本导致的,请检查所使用的软件版本,是否为官方软件,只有官方版本才会应用更加精确的IP数据库。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)