MySQL用户管理

MySQL用户管理

1.用户

1.1 用户信息

mysql> use mysql;

Database changed

mysql>
select
host,user,authentication_string
from
user;

+———–+—————+——————————————-+

| host       | user           | authentication_string |

+———–+—————+——————————————-+

| localhost | root           | *
81
F5E21E35407D884A6CD4A731AEBFB6AF209E1B |

| localhost | mysq    l
.session
| *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| localhost | mysql
.sys
| *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

+———–+—————+——————————————-+


可以通过
desc user
初步查看一下表结构

字段解释:

host

表示这个用户可以从哪个主机登陆,如果是
localhost
,表示只能从本机登陆

user

用户名

authentication_string

用户密码通过
password
函数加密后的

*_priv

用户拥有的权限

 1.2 创建用户

语法:

create
user

用户名

@

登陆主机
/ip’
identified
by

密码

;

案例:

mysql>
create
user
‘wmh’
@
‘localhost’
identified
by
‘12345678’
;

Query OK,
0
rows affected (
0.06
sec)

mysql>
select
user,host,authentication_string
from
user;

+—————+———–+——————————————-+

| user            | host      | authentication_string |

+—————+———–+——————————————-+

| root            | %          | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 |

| mysql
.session
| localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| mysql
.sys
| localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| wmh | localhost | *
84
AAC12F54AB666ECFC2A83C676908C8BBC381B1 |

新增用户

+—————+———–+——————————————-+

4
rows
in set
(
0.00
sec)

1.3 删除用户

语法: 

drop
user

用户名

@

主机名’

示例:

mysql>
select
user,host,authentication_string
from
user;

+—————+———–+——————————————-+

| user           | host       | authentication_string |

+—————+———–+——————————————-+

| root            | %          | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 |

| mysql
.session
| localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| mysql
.sys
| localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| wmh         | localhost | *
84
AAC12F54AB666ECFC2A83C676908C8BBC381B1 |

+—————+———–+——————————————-+

4
rows
in set
(
0.00
sec)

mysql>
drop
user wmh;

尝试删除

ERROR
1396
(HY000): Operation
DROP
USER failed for
‘wmh’
@
‘%’
— <=
直接给个用户名,不能删除,它默认是%
,表示所有地方可以登陆的用户

 

mysql>
drop
user
‘wmh’
@
‘localhost’
;

删除用户

Query OK,
0
rows affected (
0.00
sec)

mysql>
select
user,host,authentication_string
from
user;

+—————+———–+——————————————-+

| user            | host      | authentication_string |

+—————+———–+——————————————-+

| root            | %          | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 |

| mysql
.session
| localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| mysql
.sys
| localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

+—————+———–+——————————————-+

3
rows
in set
(
0.00
sec)

1.4 修改用户密码

语法:

自己改自己密码 

set
password=password(

新的密码

);

root用户修改指定用户的密码

set password for ‘用户名’@’主机名’=password(‘新的密码’); 

mysql>
select
host,user, authentication_string
from
user;

+———–+—————+——————————————-+

| host       | user           | authentication_string |

+———–+—————+——————————————-+

| %           | root            | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 |

| localhost | mysql
.session
| *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| localhost | mysql
.sys
| *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| localhost | wmh          | *
84
AAC12F54AB666ECFC2A83C676908C8BBC381B1 |

+———–+—————+——————————————-+

4
rows
in set
(
0.00
sec)

mysql>
set
password for
‘wmh’
@
‘localhost’
=password(
‘87654321’
);

Query OK,
0
rows affected,
1
warning (
0.00
sec)

mysql>
select
host,user, authentication_string
from
user;

+———–+—————+——————————————-+

| host       | user           | authentication_string                   |

+———–+—————+——————————————-+

| %           | root           | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 |

| localhost | mysql
.session
| *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| localhost | mysql
.sys
| *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| localhost | wmh         | *
5
D24C4D94238E65A6407DFAB95AA4EA97CA2B199 |

+———–+—————+——————————————-+

4
rows
in set
(
0.00
sec)

2.数据库的权限

MySQL数据库提供的权限列表:

MySQL用户管理 

2.1 给用户授权

刚创建的用户没有任何权限。需要给用户授权。

语法
:

grant
权限列表
on

.
对象名
to

用户名

@

登陆位置

[identified
by

密码

]

说明:

权限列表,多个权限用逗号分开

MySQL用户管理

*.*
:
代表本系统中的所有数据库的所有对象(表,视图,存储过程等)


.*
:
表示某个数据库中的所有数据对象
(
表,视图,存储过程等
)

identified by
可选。 如果用户存在,赋予权限的同时修改密码
,
如果该用户不存在,就是创建用户

案例:


使用
root
账号


终端
A

mysql> show databases;

+——————–+

| Database |

+——————–+

| information_schema |

|
57
test |

| bit_index |

| ccdata_pro |

| innodb_test |

| musicserver |

| myisam_test |

| mysql |

| order_sys |

| performance_schema |

| scott |

| sys |

| test |

| vod_system |

+——————–+

14
rows
in set
(
0.00
sec)

mysql> use test;

Database changed

mysql> show tables;

+—————-+

| Tables_in_test |

+—————-+

| account |

| student |

| user |

+—————-+

3
rows
in set
(
0.01
sec)


给用户
wmh
赋予
test
数据库下所有文件的
select
权限

mysql> grant
select on
test.* to
‘wmh’
@
‘localhost’
;

Query OK,
0
rows affected (
0.01
sec)


使用
wmh
账号


终端
B

mysql> show databases;

+——————–+

| Database |

+——————–+

| information_schema |

+——————–+

1
row
in set
(
0.00
sec)


暂停等
root
用户给
wmh
赋完权之后,在查看

mysql> show databases;

+——————–+

| Database |

+——————–+

| information_schema |

| test |

赋完权之后,就能看到新的表

+——————–+

2
rows
in set
(
0.01
sec)

mysql> use test;

Reading
table
information for completion of
table and
column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;

+—————-+

| Tables_in_test |

+—————-+

| account |

| student |

| user |

+—————-+

3
rows
in set
(
0.00
sec)

mysql>
select
*
from
account;

+—-+——–+———+

| id | name | blance |

+—-+——–+———+

|
2
|
李四
|
321.00
|

|
3
|
王五
|
5432.00
|

|
4
|
赵六
|
543.90
|

|
5
|
赵六
|
543.90
|

+—-+——–+———+

4
rows
in set
(
0.00
sec)


没有删除权限

mysql>
delete from
account;

ERROR
1142
(
42000
):
DELETE
command denied to user
‘wmh’
@
‘localhost’
for
table

‘account’

备注:特定用户现有查看权限

mysql> show grants for
‘wmh’
@
‘%’
;

+———————————————–+

| Grants for wmh@% |

+———————————————–+

| GRANT USAGE
ON
*.* TO
‘wmh’
@
‘%’
|

| GRANT ALL PRIVILEGES
ON
`test`.* TO
‘wmh’
@
‘%’
|

+———————————————–+

2
rows
in set
(
0.00
sec)

mysql> show grants for
‘root’
@
‘%’
;

+————————————————————-+

| Grants for root@% |

+————————————————————-+

| GRANT ALL PRIVILEGES
ON
*.* TO
‘root’
@
‘%’
WITH GRANT OPTION |

+————————————————————-+

1
row
in set
(
0.00
sec)

注意:如果发现赋权限后,没有生效,执行如下指令:

flush privileges;  

2.2 回收权限

语法 :

revoke
权限列表
on

.
对象名
from

用户名

@

登陆位置

示例:


回收
wmh

test
数据库的所有权限

–root
身份,终端
A

mysql> revoke all
on
test.*
from
‘wmh’
@
‘localhost’
;

Query OK,
0
rows affected (
0.00
sec)

–wmh
身份,终端
B

mysql> show databases;

+——————–+

| Database |

+——————–+

| information_schema |

| test |

+——————–+

2
rows
in set
(
0.00
sec)

mysql> show databases;

+——————–+

| Database |

+——————–+

| information_schema |

+——————–+

1
row
in set
(
0.00
sec)

 

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/846c6c2beb.html