- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章MySQL验证用户权限的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
知识归纳 。
因为MySQL是使用User和Host两个字段来确定用户身份的,这样就带来一个问题,就是一个客户端到底属于哪个host。 如果一个客户端同时匹配几个Host,对用户的确定将按照下面的优先级来排 。
当你登录mysql服务器之后,你可以使用user()和current_user()来检查你登陆的用户.
当你登录服务器并执行MySQL的命令时,系统将检查你当前的用户(current_user)是否有权限进行当前操作.
测试过程 创建3个用户名相同,HOST和权限都不同的USER 。
1
2
3
4
5
6
|
mysql>
grant
select
on
*.*
to
''
@
'%'
identified
by
'123'
;
Query OK, 0
rows
affected (0.00 sec)
mysql>
grant
select
,createon *.*
to
'bruce'
@
'10.20.0.232'
identified
by
'123'
;
Query OK, 0
rows
affected (0.01 sec)
mysql>
grant
select
,
create
,deleteon *.*
to
'bruce'
@
'%'
identified
by
'123'
;
Query OK, 0rows affected (0.00 sec)
|
从另外一个机器登陆过来 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[root@brucetest7 ~]# mysql -ubruce -p -h10.20.0.231
Enter
password
:
Welcome
to
the MariaDB monitor. Commands
end
with
;
or
\g.
Your MySQL
connection
id
is
5
Server version: 5.5.20-log MySQL Community Server (GPL)
This software comes
with
ABSOLUTELY
NO
WARRANTY. This
is
free
software,
and
you are welcome tomodify
and
redistribute it under the GPL v2 license
Type
'help;'
or
'\h'
for
help. Type
'\c'
to
clear the
current
inputstatement.
MySQL [(none)]> show grants;
+
-------------------------------------------------------------------------------------------------------------------------+
| Grants
for
bruce@10.20.0.232 |
+
-------------------------------------------------------------------------------------------------------------------------+
|
GRANT
SELECT
, CREATEON *.*
TO
'bruce'
@
'10.20.0.232'
IDENTIFIED
BY
PASSWORD
'*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'
|
+
-------------------------------------------------------------------------------------------------------------------------+
1 row inset (0.00 sec)
MySQL [(none)]>
select
user
(),
current_user
();
+
-------------------+-------------------+
|
user
() |
current_user
() |
+
-------------------+-------------------+
| bruce@10.20.0.232 | bruce@10.20.0.232 |
+
-------------------+-------------------+
1 row
in
set
(0.03 sec)
|
明确的user,host,进行精确匹配,找到用户为'bruce'@'10.20.0.232' 删除掉这个用户再登陆 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
mysql>
delete
from
mysql.userwhereuser=
'bruce'
andhost=
'10.20.0.232'
;
Query OK, 1row affected (0.00 sec)
mysql> flush
privileges
;
Query OK, 0
rows
affected (0.00 sec)
[root@brucetest7 ~]# mysql -ubruce -p -h10.20.0.231
Enter
password
:
Welcome
to
the MariaDB monitor. Commands
end
with
;
or
\g.
Your MySQL
connection
id
is
6
Server version: 5.5.20-log MySQL Community Server (GPL)
This software comes
with
ABSOLUTELY
NO
WARRANTY. This
is
free
software,
and
you are welcome tomodify
and
redistribute it under the GPL v2 license
Type
'help;'
or
'\h'
for
help. Type
'\c'
to
clear the
current
inputstatement.
MySQL [(none)]>show grants;
+
-----------------------------------------------------------------------------------------------------------------------+
| Grants
for
bruce@% |
+
-----------------------------------------------------------------------------------------------------------------------+
|
GRANT
SELECT
,
DELETE
, CREATEON*.*
TO
'bruce'
@
'%'
IDENTIFIED BYPASSWORD
'*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'
|
+
-----------------------------------------------------------------------------------------------------------------------+
1 row inset (0.00 sec)
MySQL [(none)]>
select
user
(),
current_user
();
+
-------------------+----------------+
|
user
() |
current_user
() |
+
-------------------+----------------+
| bruce@10.20.0.232 | bruce@% |
+
-------------------+----------------+
1 row
in
set
(0.00 sec)
|
此时匹配的用户是bruce@% 然后把这个用户也删除,再登陆 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[root@brucetest7 ~]# mysql -ubruce -p -h10.20.0.231
Enter
password
:
Welcome
to
the MariaDB monitor. Commands
end
with
;
or
\g.
Your MySQL
connection
id
is
8
Server version: 5.5.20-log MySQL Community Server (GPL)
This software comes
with
ABSOLUTELY
NO
WARRANTY. This
is
free
software,
and
you are welcome tomodify
and
redistribute it under the GPL v2 license
Type
'help;'
or
'\h'
for
help. Type
'\c'
to
clear the
current
inputstatement.
MySQL [(none)]> show grants;
+
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants
for
@% |
+
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
GRANT
SELECT
ON
*.*
TO
''
@
'%'
IDENTIFIED
BY
PASSWORD
'*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'
|
|
GRANT
SELECT
,
INSERT
,
UPDATE
,
DELETE
,
CREATE
,
DROP
,
REFERENCES
,
INDEX
,
ALTER
,
CREATE
TEMPORARY
TABLES, LOCK TABLES,
CREATE
VIEW
, SHOW
VIEW
, CREATEROUTINE, EVENT,
TRIGGER
ON
`test`.*
TO
''
@
'%'
|
|
GRANT
SELECT
,
INSERT
,
UPDATE
,
DELETE
,
CREATE
,
DROP
,
REFERENCES
,
INDEX
,
ALTER
, CREATETEMPORARY TABLES, LOCK TABLES,
CREATE
VIEW
, SHOW
VIEW
, CREATEROUTINE, EVENT,
TRIGGER
ON
`test\_%`.*
TO
''
@
'%'
|
+
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
MySQL [(none)]>
select
user
(),
current_user
();
+
-------------------+----------------+
|
user
() |
current_user
() |
+
-------------------+----------------+
| bruce@10.20.0.232 | @% |
+
-------------------+----------------+
1 row
in
set
(0.00 sec)
|
此时匹配的是''@'%' 用户 。
对于空用户,默认有对test或test开头的数据库有权限.
以上就是MySQL验证用户权限的方法,希望对大家的学习有所启发.
最后此篇关于MySQL验证用户权限的方法的文章就讲到这里了,如果你想了解更多关于MySQL验证用户权限的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
在为 Web 应用程序用例图建模时,为用户可以拥有的每个角色创建一个角色是否更好?或拥有一个角色、用户和一个具有特权的矩阵? guest < 用户 < 版主 < 管理员 1: guest 、用户、版主
我无法使用 Elixir 连接到 Postgres: ** (Mix) The database for PhoenixChat.Repo couldn't be created: FATAL 28P
这个问题已经有答案了: Group by field name in Java (7 个回答) 已关闭 7 年前。 我必须编写一个需要 List 的方法并返回 Map> . User包含 Person
感谢您的帮助,首先我将显示代码: $dotaz = "Select * from customers JOIN contracts where customers.user_id ='".$_SESS
我只想向所有用户中的一个用户显示一个按钮。我尝试了 orderByKey() 但没有成功! 用户模型有 id 成员,我尝试使用 orderByChild("id") 但结果相同! 我什至尝试了以下技巧
我们在工作中从 MongoDB 切换到 Postgres,我正在建立一个 BDR 组。 在这一步,我正在考虑安全性并尽可能锁定。因此,我希望设置一个 replication 用户(角色)并让 BDR
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我可以使用 Sonata User Bundle 将 FOS 包集成到 sonata Admin 包中。我的登录功能正常。现在我想添加 FOSUserBundle 中的更改密码等功能到 sonata
在 LinkedIn 中创建新应用程序时,我得到 4 个单独的代码: API key 秘钥 OAuth 用户 token OAuth 用户密码 我在 OAuth 流程中使用前两个。 的目的是什么?最后
所以..我几乎解决了所有问题。但现在我要处理另一个问题。我使用了这个连接字符串: SqlConnection con = new SqlConnection(@"Data Source=.\SQLEX
我有一组“用户”和一组“订单”。我想列出每个 user_id 的所有 order_id。 var users = { 0: { user_id: 111, us
我已经为我的Django应用创建了一个用户模型 class User(Model): """ The Authentication model. This contains the u
我被这个问题困住了,找不到解决方案。寻找一些方向。我正在用 laravel 开发一个新的项目,目前正致力于用户认证。我正在使用 Laravels 5.8 身份验证模块。 对密码恢复 View 做了一些
安装后我正在使用ansible配置几台计算机。 为此,我在机器上本地运行 ansible。安装中的“主要”用户通常具有不同的名称。我想将该用户用于诸如 become_user 之类的变量. “主要”用
我正在尝试制作一个运行 syncdb 的批处理文件来创建一个数据库文件,然后使用用户名“admin”和密码“admin”创建一个 super 用户。 到目前为止我的代码: python manage.
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
我已在 Azure 数据库服务器上设置异地复制。 服务器上运行的数据库之一具有我通过 SSMS 创建的登录名和用户: https://learn.microsoft.com/en-us/azure/s
我有一个 ionic 2 应用程序,正在使用 native FB Login 来检索名称/图片并将其保存到 NativeStorage。流程是我打开WelcomePage、登录并保存数据。从那里,na
这是我的用户身份验证方法: def user_login(request): if request.method == 'POST': username = request.P
我试图获取来自特定用户的所有推文,但是当我迭代在模板中抛出推文时,我得到“User”对象不可迭代 观看次数 tweets = User.objects.get(username__iexact='us
我是一名优秀的程序员,十分优秀!