MySQL 用户管理

这篇具有很好参考价值的文章主要介绍了MySQL 用户管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

用户管理

用户

用户信息

创建用户

删除用户

修改用户密码

数据库的权限

给用户 

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

回收权限


用户管理

如果我们只能使用 root 用户,这样存在安全隐患。这时,就需要使用 MySQL 的用户管理。
MySQL 用户管理

用户

用户信息

MySQL 中的用户,都存储在系统数据库 mysql user
mysql> use mysql;
Database changed
mysql> select host,user,authentication_string from user;
+-----------+---------------+-------------------------------------------+
| host | user | authentication_string |
+-----------+---------------+-------------------------------------------+
| localhost | root | * 81 F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| localhost | mysql .session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql .sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+---------------+-------------------------------------------+
-- 可以通过 desc user 初步查看一下表结构
字段解释:
  • host表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
  • user用户名
  • authentication_string用户密码通过password函数(比md5更安全)加密后的
  • *_priv用户拥有的权限

创建用户

语法:
create user ' 用户名 ' @ ' 登陆主机 /ip' identified by ' 密码 ' ;
案例:       
mysql> create user 'lml' @ '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 |
| lml| localhost | * 84 AAC12F54AB666ECFC2A83C676908C8BBC381B1 | -- 新增用户
+---------------+-----------+-------------------------------------------+
4 rows in set ( 0.00 sec)
-- 此时便可以使用新账号新密码进行登陆啦
-- 备注:可能实际在设置密码的时候,因为 mysql 本身的认证等级比较高,一些简单的密码无法设置,会爆出如下报错:
-- ERROR 1819 (HY000): Your password does not satisfy the current policy
requirements
-- 解决方案: https://blog.csdn.net/zhanaolu4821/article/details/93622812
-- 查看密码设置相关要求: SHOW VARIABLES LIKE 'validate_password%';
-- 关于新增用户这里,需要大家注意,不要轻易添加一个可以从任意地方登陆的 user。

删除用户

语法:
drop user ' 用户名 ' @ ' 主机名'
示例:
mysql> select user,host,authentication_string from user;
+---------------+-----------+-------------------------------------------+
| user | host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | % | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 |
| mysql .session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql .sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| lml| localhost | * 84 AAC12F54AB666ECFC2A83C676908C8BBC381B1 |
+---------------+-----------+-------------------------------------------+
4 rows in set ( 0.00 sec)
mysql> drop user whb; -- 尝试删除
ERROR 1396 (HY000): Operation DROP USER failed for 'lml' @ '%' -- <= 直接给个用户名,不能删除,它默认是% ,表示所有地方可以登陆的用户
mysql> drop user 'whb' @ '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)

修改用户密码

语法:
自己改自己密码:
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 | lml | * 84 AAC12F54AB666ECFC2A83C676908C8BBC381B1 |
+-----------+---------------+-------------------------------------------+
4 rows in set ( 0.00 sec)
mysql> set password for 'lml' @ '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 | whb | * 5 D24C4D94238E65A6407DFAB95AA4EA97CA2B199 |
+-----------+---------------+-------------------------------------------+
4 rows in set ( 0.00 sec)

数据库的权限

MySQL 数据库提供的权限列表:
MySQL 用户管理

给用户 

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

语法: 

grant 权限列表 on . 对象名 to ' 用户名 ' @ ' 登陆位置 ' [identified by ' 密码 ' ]
说明:
权限列表,多个权限用逗号分开
grant select on ...
grant select , delete , create on ....
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限'
  • *.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)。
  • .* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)。
  • identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户。

案例:文章来源地址https://www.toymoban.com/news/detail-456772.html

-- 使用 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)
-- 给用户lml 赋予 test 数据库下所有文件的 select 权限
mysql> grant select on test.* to 'lml' @ 'localhost' ;
Query OK, 0 rows affected ( 0.01 sec)
-- 使用 whb 账号
-- 终端 B
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set ( 0.00 sec)
-- 暂停等 root 用户给lml 赋完权之后,在查看
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 'lml' @ 'localhost' for table 'account'
备注:特定用户现有查看权限
mysql> show grants for 'lml' @ '%' ;
+-----------------------------------------------+
| Grants for whb@% |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO 'lml' @ '%' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'lml' @ '%' |
+-----------------------------------------------+
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;

回收权限

语法:
revoke 权限列表 on . 对象名 from ' 用户名 ' @ ' 登陆位置 '
示例:
-- 回收lml test 数据库的所有权限
--root 身份,终端 A
mysql> revoke all on test.* from 'lml' @ 'localhost' ;
Query OK, 0 rows affected ( 0.00 sec)
--lml 身份,终端 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)

到了这里,关于MySQL 用户管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 下 普通用户创建文件(目录)权限不足问题

     原因:                 执行此操作的用户对上级目录 缺乏相应权限 上图中的上级目录为 test2 ,查看权限如下,其他用户的权限为  r-x(读和执行)   ,要在其下创建新文件还需要 写(w) 的权限  解决问题:修改test权限为 drwxr-x rwx        命令: chmod 757 test2 需要注

    2024年02月11日
    浏览(57)
  • Linux 普通用户创建文件夹(目录)权限不足的解决办法

    Linux 普通用户创建文件夹(目录)权限不足的解决办法。 创建文件夹a 提示无权限,提示 mkdir:cannot create directory \\\'a\\\':permission denied 。 执行此操作的用户对上级目录缺乏相应权限。 1.sudo 创建。 进入上级目录test,修改上级目录的权限,再执行mkdir命令。

    2024年02月04日
    浏览(63)
  • 学习笔记应用——创建用户账户并且拥有自己的信息

    将建立一个用户注册和身份验证系统,让用户能够注册账户,进而登录和注销。我们将创建一个新的应用程序,其中包含与处理用户账户相关的所有功能。 我们首先使用命令 startapp 来创建一个名为 users 的应用程序: 成功后,出现如图文件 编写users/urls.py 编写users/views.py 编写

    2024年01月20日
    浏览(77)
  • Linux文件管理(文件/目录的创建、更改、删除)

    1.严格区分大小写 2.文件命名不能使用字符\\\"/\\\" 3.目录或文件名的长度不能超过255个字符 建议: (1)文件名由两个或两个以上单词组成时,尽量使用\\\"_\\\"来代替space键 (2)尽量不用字母的大小写来区分文件或者目录 4.Linux的文件扩展名在Linux的操作系统中没有意义。换句话说,

    2024年02月07日
    浏览(91)
  • mysql创建用户以及给用户授予权限

    说明: username——你将创建的用户名, password——该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器. 进入到mysql的客户端,在下图中可以看到,创建了一个用户名为 xaiodong 并且密码为 123456 的用户 这个时候创建的改用户只能看见一个库, information_schem

    2024年02月07日
    浏览(47)
  • 【MySql】MySQL 如何创建新用户

    登录 MySQL : 使用 root 用户或具有相应权限的用户登录到 MySQL。可以使用以下命令: 这里 -u 后面跟的是用户名, -p 表示提示输入密码。 创建新用户 : 使用以下 SQL 命令创建新用户: \\\'新用户名\\\' : 你想创建的用户名。 \\\'登录来源地址\\\' : 用户的登录来源。可以是一个具体的 I

    2024年01月19日
    浏览(44)
  • react后端开发:如何根据特定ID创建新的用户信息?

    以音乐app开发为例,我们想要在想要创建新的唱片库,就需要使用Post连接服务器端新建唱片ID,并在该ID处插入唱片信息。怎么做呢? 使用create同时创建id和唱片信息 不过在这之前,我们一般先需要进行判断,新写入的唱片是否存在,比如某用户已经上传了周杰伦的青花瓷,

    2024年01月23日
    浏览(54)
  • JavaEE 项目:用户信息管理系统

    目录 项目介绍 数据库设计 各包结构设计与说明 功能实现 1. 登录功能 2. 分页查询、模糊查询 3. 增、删、改操作 总结 本项目主要实现了对 用户信息的管理 ,能够在客户端很好的操作各个功能,并实时更新用户数据。采用  MySQL数据库  存储数据, JDBC  连接数据库, Servl

    2024年02月08日
    浏览(62)
  • c++用户管理信息(双向链表)

    2024年02月22日
    浏览(32)
  • ubuntu服务器创建多用户及用户管理

    1. 安装ssh服务   安装openssh-server:   查看是否已经启动(如果输出中有sshd,则表示已经启动):   如果没有启动,则可以运行如下命令启动:   重启:    2. 创建并管理用户   这里以用户xxx为例,xxx是你要操作的用户名。超级管理员用户名则为root。 创建用户

    2024年02月03日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包