首页 数据库 mysql教程 [MySQL]账户及权限管理_MySQL

[MySQL]账户及权限管理_MySQL

Jun 01, 2016 pm 01:31 PM

bitsCN.com

[MySQL]账户及权限管理

 

MySQL初始账户管理

 

MySQL的初始账户如下:

[sql] [root@lx16 ~]# mysql -u root  mysql> select host,user,password from mysql.user;  +-----------+------+----------+  | host      | user | password |  +-----------+------+----------+  | lx16      | root |          |  | 127.0.0.1 | root |          |  | ::1       | root |          |  | localhost |      |          |  | lx16      |      |          |  | localhost | root |          |  +-----------+------+----------+  
登录后复制

MySQL有两类初始用户:

root超级账户:拥有全部的权限,可以做任何事。

匿名账户:如何人都可以通过它连接服务器,但它权限很小。

在默认情况下,这些账户都没有口令,因此为了安全起见,我们首先必须得为所有的root账户设置密码。

设置密码的第一种方法是用SET PASSWORD语句,假如我们现在要给'root'@'localhost'设置口令,只要执行:

[sql] mysql> set password for 'root'@'localhost'=password('*****');  
登录后复制

设置密码的第二种方法是直接update user权限表,这种方法的好处是可以同时给多个账户设置密码,如下面的语句可以一次修改所有root账户的密码:

[sql] mysql> update mysql.user set password=password('***') where user='root';  mysql> flush privileges;  
登录后复制

如果用update方式修改,必须明确告诉服务器重新加载权限表(flush privileges)

对于匿名账户,强烈建议将他们删除,删除语句如下:

[sql] mysql> drop user ''@'localhost';  mysql> drop user ''@'lx16'; 
登录后复制

执行完以上操作之后,user权限表里的数据如下:

[sql] mysql> select host,user,password from mysql.user;  +-----------+------+-------------------------------------------+  | host      | user | password                                  |  +-----------+------+-------------------------------------------+  | lx16      | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |  | 127.0.0.1 | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |  | ::1       | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |  | localhost | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |  +-----------+------+-------------------------------------------+  
登录后复制

创建新账户

MySQL不仅要求你必须值得谁(user_name)能连接,还必须指定从什么地方连接(host_name),也就是说即便两个账户拥有相同的名字,如果他们将从不同客户端连接,你也要为它们各自创建一个账户。

可以利用以下两个通配符灵活配置主机名的限制:

‘%’ - 匹配任何多个字符

‘-’ - 配置一个字符

[sql] test账户可以从任意IP连接  create user 'test'@'%' identified by '***';  test账户只能从本地连接  create user 'test'@'localhost' identified by '***';  test账户只能从'192.168.2.%'网段连接  create user 'test'@'192.168.2.%' identified by '***';  还可以使用IP掩码  create user 'test'@'192.168.2.2  
登录后复制

权限管理

对账户授权需要使用Grant语句,如果账户已存在,Grant语句给它授权,如果账户不存在,Grant语句先创建它,再给它授权。

可以通过show grants语句获得自己的权限:

[sql] mysql> show grants;  +----------------------------------------------------------------------------------------------------------------------------------------+  | Grants for root@localhost                                                                                                              |  +----------------------------------------------------------------------------------------------------------------------------------------+  | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*578EC7851088AC1F2A67B100540344B03BD2BA99' WITH GRANT OPTION |  +----------------------------------------------------------------------------------------------------------------------------------------+  
登录后复制

也可以通过show grants for 获得其它用户的权限:

[sql] mysql>show grants for ''@'localhost';  +--------------------------------------+  | Grants for @localhost                |  +--------------------------------------+  | GRANT USAGE ON *.* TO ''@'localhost' |  +--------------------------------------+  
登录后复制

上面显示的是两种特殊权限,一种是ALL(后面的PRIVILEGES关键字可省略),表示所有操作的权限(但不包括Grant权限,Grant权限由with grant option赋予);另一种是USAGE,一种特殊的“无权限”的权限。

在某些少数情况下,我们可能需要更细致的权限控制,MySQL可以做到在列上进行授权,下面这条语句表示把全表的select权限给test,但只把(street,city)这两列的update权限给它:

[sql] grant select, update (street,city) on sampdb.member to 'test'@'localhost';  
登录后复制

 


bitsCN.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热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 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用Alter Table语句在MySQL中更改表? 如何使用Alter Table语句在MySQL中更改表? Mar 19, 2025 pm 03:51 PM

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

如何为MySQL连接配置SSL/TLS加密? 如何为MySQL连接配置SSL/TLS加密? Mar 18, 2025 pm 12:01 PM

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

您如何处理MySQL中的大型数据集? 您如何处理MySQL中的大型数据集? Mar 21, 2025 pm 12:15 PM

文章讨论了处理MySQL中大型数据集的策略,包括分区,碎片,索引和查询优化。

哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什么? 哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什么? Mar 21, 2025 pm 06:28 PM

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]

如何使用Drop Table语句将表放入MySQL中? 如何使用Drop Table语句将表放入MySQL中? Mar 19, 2025 pm 03:52 PM

本文讨论了使用Drop Table语句在MySQL中放下表,并强调了预防措施和风险。它强调,没有备份,该动作是不可逆转的,详细介绍了恢复方法和潜在的生产环境危害。

您如何用外国钥匙代表关系? 您如何用外国钥匙代表关系? Mar 19, 2025 pm 03:48 PM

文章讨论了使用外国密钥来代表数据库中的关系,重点是最佳实践,数据完整性和避免的常见陷阱。

如何在JSON列上创建索引? 如何在JSON列上创建索引? Mar 21, 2025 pm 12:13 PM

本文讨论了在PostgreSQL,MySQL和MongoDB等各个数据库中的JSON列上创建索引,以增强查询性能。它解释了索引特定的JSON路径的语法和好处,并列出了支持的数据库系统。

如何保护MySQL免受常见漏洞(SQL注入,蛮力攻击)? 如何保护MySQL免受常见漏洞(SQL注入,蛮力攻击)? Mar 18, 2025 pm 12:00 PM

文章讨论了使用准备好的语句,输入验证和强密码策略确保针对SQL注入和蛮力攻击的MySQL。(159个字符)

See all articles