2月阅读周·MySQL数据库入门:用户管理之创建普通用户篇
引言
《MySQL数据库入门》作为一种技术的入门教程,最重要也最难的一件事情就是要将一些非常复杂、难以理解的思想和问题简单化,让初学者能够轻松理解并快速掌握。本教材对每个知识点都进行了深入的分析,并针对每个知识点精心设计了相关案例,然后模拟这些知识点在实际工作中的运用,真正做到了知识的由浅入深、由易到难。
全书可以大致分成三个部分的内容:
第1章主要介绍了数据库的相关知识,包括创建的数据库产品、数据库存储结构、MySQL的安装配置与使用等。通过本章的学习,要求初学者对数据库有一个大致的认识,并且可以独立完成MySQL数据库的安装和配置。
第6~7章讲解了数据库中的事务、存储过程以及视图,这些内容可以对MySQL数据库进行性能优化,希望初学者可以循序渐进掌握MySQL中的各项技术。
第8章讲解了MySQL数据库的高级操作,包括数据的备份还原、用户管理和权限管理,要求初学者会对数据进行备份还原,并且可以通过权限控制管理不同的用户。
创建普通用户
在创建新用户之前,可以通过SELECT语句查看mysql.user表中有哪些用户,查询结果如下:
mysql>USE mysql;
Database changed
mysql>SELECT host,user,password FROM user;
+-----------+------+-----------------------------------------------+
| host | user | password |
+-----------+------+-----------------------------------------------+
| localhost | root | *27FE6B5A028489ECF5079808FC148190EB26F4D7 |
| localhost | | |
| % | | |
+-----------+------+-----------------------------------------------+
3 rows in set (0.00 sec)
从上述结果可以看出,user表中只有一个root用户信息。
由于MySQL中存储的数据较多,通常一个root用户是无法管理这些数据的,因此需要创建多个普通用户来管理不同的数据,创建普通用户有三种方式,接下来将针对这三种方式进行详细的讲解。
1.使用GRANT语句创建用户
GRANT语句不仅可以创建新用户,还可以对用户进行授权(将在后面讲解),该语句会自动加载权限表,不需要手动刷新,而且安全、准确、错误少,因此,使用GRANT语句是创建用户最常用的方法。
GRANT语句创建用户的语法格式如下:
GRANT privileges ON database.table
TO 'username'@'hostname' [IDENTIFIED BY [PASSWORD]'password']
[,'username'@'hostname [IDENTIFIED BY [PASSWORD]'password']] …
上述语法格式中,privileges参数表示该用户具有的权限信息,database.table表示新用户的权限范围表,可以在指定的数据库、表上使用自己的权限,username参数是新用户的名称,hostname参数是主机名,password参数是新用户的密码。
使用GRANT语句创建一个新用户,用户名为user1、密码为123,并授予该用户对chapter08.student表有查询权限,GRANT语句如下:
GRANT SELECT ON chapter08.student TO 'user1'@'localhost' IDENTIFIED BY '123';
上述语句执行成功后,可以通过SELECT语句验证用户是否创建成功,具体如下:
mysql>SELECT host,user,password FROM user;
+-----------+-------+------------------------------------------------+
| host | user | password |
+-----------+-------+------------------------------------------------+
| localhost | root | *27FE6B5A028489ECF5079808FC148190EB26F4D7 |
| localhost | | |
| localhost | user1 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| % | | |
+-----------+-------+------------------------------------------------+
4 rows in set (0.00 sec)
从执行结果可以看出,使用GRANT语句成功地创建一个新用户user1,但密码显示的并不是123,而是一串字符,这是因为在创建用户时,MySQL会对用户的密码自动加密,以提高数据库的安全性。
需要注意的是,用户使用GRANT语句创建新用户时,必须有GRANT权限。
2.使用CREATE USER语句创建用户
使用CREATE USER语句创建新用户时,服务器会自动修改相应的授权表,但需要注意的是,该语句创建的新用户是没有任何权限的。
CREATE USER语句创建用户的语法格式如下:
CREATE USER 'username'@'hostname'[IDENTIFIED BY [PASSWORD]'password']
[,'username'@'hostname'[IDENTIFIED BY [PASSWORD]'password']]…
上述语法格式中,username表示新创建的用户名,hostname表示主机名,IDENTIFIED BY关键字用于设置用户的密码,password表示用户的密码,PASSWORD关键字表示使用哈希值设置密码,该参数是可选的,如果密码是一个普通的字符串,就不需要使用PASSWORD关键字。
使用CREATE USER语句创建一个新用户,用户名为user2、密码为123,CREATE USER语句如下:
CREATE USER 'user2'@'localhost' IDENTIFIED BY '123';
上述语句执行成功后,可以通过SELECT语句验证用户是否创建成功,具体如下:
mysql> SELECT host,user,password FROM user;
+-----------+-------+------------------------------------------------+
| host | user | password |
+-----------+-------+------------------------------------------------+
| localhost | root | *27FE6B5A028489ECF5079808FC148190EB26F4D7 |
| localhost | user2 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| localhost | | |
| localhost | user1 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| % | | |
+-----------+-------+------------------------------------------------+
5 rows in set (0.00 sec)
从执行结果可以看出,CREATE USER语句成功地创建了一个user2用户。需要注意的是,如果添加的用户已经存在,那么在执行CREATE USER语句时会报错。
3.使用INSERT语句创建用户
通过前面的讲解可知,不管是CREATE USER语句还是GRANT语句,在创建用户时,实际上都是在user表中添加一条新的记录,因此,也可以使用INSERT语句直接在该表中添加一个用户。
INSERT语句创建用户的语法格式如下:
INSERT INTO mysql.user(Host,User,Password,ssl_cipher、x509_issuer、x509_subject)
VALUES('hostname','username',PASSWORD('password'),'','','');
上述语法格式中,mysql.user参数表示操作的表,Host、User、Password、ssl_cipher、x509_issuer、x509_subject为相应字段,PASSWORD()是一个加密函数,用于给密码加密。
需要注意的是,使用INSERT语句创建用户时,通常只需添加Host、User和Password这三个字段即可,其他的字段取其默认值,但由于ssl_cipher、x509_issuer、x509_subject字段是没有默认值的,因此INSERT语句创建用户时,还需要为这几个字段设置初始值。
使用INSERT语句直接在mysql.user表中创建一个新用户,用户名为user3、密码为123,INSERT语句如下:
INSERT INTO mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject)
VALUES('localhost','user3',PASSWORD('123'),'','','');
上述语句执行成功后,就可以通过SELECT语句验证用户是否创建成功,具体如下:
mysql> SELECT host,user,password FROM user;
+-----------+-------+------------------------------------------------+
| host | user | password |
+-----------+-------+------------------------------------------------+
| localhost | root | *27FE6B5A028489ECF5079808FC148190EB26F4D7 |
| localhost | user2 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| localhost | | |
| localhost | user1 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| % | | |
| localhost | user3 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+-----------+-------+------------------------------------------------+
6 rows in set (0.00 sec)
从执行结果可以看出,使用INSERT语句成功地创建一个新用户user3,但是由于INSERT语句没有刷新权限表的功能,因此,user3用户暂时是不能使用的,为了让当前用户生效,还需要手动刷新当前的权限表或重新启动MySQL服务,刷新权限表的语句如下:
FLUSH PRIVILEGES;
上述语句执行成功后,就可以使用user3用户登录MySQL数据库了。
总结
每个软件都会对用户信息进行管理,MySQL也不例外,MySQL中的用户分为root用户和普通用户,root用户为超级管理员,具有所有权限,如创建用户、删除用户、管理用户等,而普通用户只拥有被赋予的某些权限。
由于MySQL中存储的数据较多,通常一个root用户是无法管理这些数据的,因此需要创建多个普通用户来管理不同的数据。
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
- 点赞
- 收藏
- 关注作者
评论(0)