当我们创建了一个新的用户,但是它没有权限创建数据库
可以使用GRANT
语句来授予该权限需要确保该用户拥有CREATE DATABASE权限
执行这个语句,你应该能够成功授予 'user01'@'localhost' 创建数据库的权限。
GRANT CREATE ON *.* TO 'user01'@'localhost';
*.*
表示所有数据库的所有表。如果你只想授予创建数据库的权限而不关心特定数据库,可以使用这个通配符。- 请确保你具有足够的权限来执行
GRANT
语句,通常只有具有GRANT
权限的管理员用户才能执行此操作。
MySQL用户的添加、删除、登录、权限设置等内容
添加用户
create user 'user01' @'localhost' identified by 'user01';
这个语句将创建一个名为user01
的MySQL用户,该用户只能从本地主机(localhost
)登录,并且使用user01
作为密码进行身份验证。请确保在执行此语句之前,你具有足够的权限来执行这个操作。如果你没有足够的权限,需要使用具有适当权限的用户来执行此操作。
注:用户的添加修改删除等操作都是在root权限下操作的!
删除用户
drop user ‘user01’@’localhost’;
使用这个语句,你可以删除名为user01
的MySQL用户,该用户只能从本地主机(localhost
)登录。
查看所有用户
SELECT user, host FROM mysql.user;
这个查询将返回一个包含所有用户和主机信息的结果集,其中user
列包含用户名,host
列包含主机信息。这将允许你查看MySQL服务器上存在的所有用户及其对应的主机。请注意,只有具有足够权限的用户才能执行这个查询。
查看当前用户
这两个查询都将返回当前登录用户的用户名和主机信息。通常情况下,它们应该返回相同的结果,但有一些特殊情况下,CURRENT_USER()
可能返回更详细的信息。
select current_user();
或select user();
登录新用户
这两个查询都将返回当前登录用户的用户名和主机信息。通常情况下,它们应该返回相同的结果,但有一些特殊情况下,CURRENT_USER()
可能返回更详细的信息。
mysql -u user01 -p
修改用户名
使用这个语句,你可以将名为user01
的MySQL用户重命名为user02,前提是你有足够的权限来执行此操作。请注意,MySQL用户名通常是区分大小写的,因此user01
和User01
将被视为不同的用户名。
rename user 'user01'@'localhost' to 'user02'@'localhost';
你可以使用以下SQL查询语句来查看MySQL服务器上所有用户的用户名:
select user from mysql.user;
修改用户密码
这个语句将用户'User01'@'localhost'
的密码更改为'user02'
。请将'user02'
替换为你希望为用户设置的新密码。确保你具有足够的权限来执行此操作,因为只有具有适当权限的用户才能更改其他用户的密码。
可以通过重新打开cmd控制台登录,检查密码修改是否成功
alter user 'User01'@'localhost' identified by 'user02';
添加权限(注:添加权限是指,将root用户的数据库读取等权限赋予你所指定的用户。)
这个查询将返回用户'User01'@'localhost'
的授权信息,显示该用户在MySQL服务器上被授予的权限。注:查看权限也需要在root权限下!
SHOW GRANTS FOR 'User01'@'localhost';
撤销权限
会将用户 'User01'@'localhost'
对数据库 test
的 score
表授予所有权限。ALL
关键字表示所有权限,包括SELECT、INSERT、UPDATE、DELETE等等。这样,'User01'@'localhost'
用户将被授予对 test.score
表的所有操作权限。
GRANT ALL ON test.score TO 'User01'@'localhost';
在User01用户下刷新权限,然后查看数据库可以检查权限是否撤销成功。撤销权限的格式还有其他的形式,但大概也都与此类似,有兴趣的可以查阅相关资料了解。
刷新系统权限表,即时生效
flush privileges;
FLUSH PRIVILEGES
是一个MySQL语句,它用于重新加载权限表,以便立即应用对用户权限的更改,而无需重新启动MySQL服务器。当你使用 GRANT
或 REVOKE
命令更改了用户权限时,通常需要运行 FLUSH PRIVILEGES
以确保这些更改立即生效。
执行 FLUSH PRIVILEGES
后,MySQL会重新加载权限表,使任何新的或修改的权限立即生效,而不需要等待MySQL服务器重新启动。这可以在不中断MySQL服务的情况下管理用户权限。
请注意,从MySQL 5.7.6版本开始,FLUSH PRIVILEGES
不再是必需的,因为MySQL会自动管理权限表的刷新。但在某些情况下,手动运行它仍然是一个好习惯,以确保更改立即生效。