我有一个可以从任何主机访问的用户(我们目前正在开发中)。但我想限制存储过程的执行仅限于本地主机。问题是localhost
无法识别该用户。
DROP USER IF EXISTS 'admin'@'%';
CREATE USER IF NOT EXISTS 'admin'@'%' IDENTIFIED WITH 'caching_sha2_password' BY 'my_password';
###########################
### STORED PROCEDURES ###
###########################
GRANT EXECUTE ON MY_DATABASE.* TO 'admin'@'127.0.0.1';
###########################
### SELECT ###
###########################
GRANT SELECT ON MY_DATABASE.MY_TABLE TO 'admin'@'%' WITH GRANT OPTION;
GRANT SELECT ON MY_DATABASE.MY_TABLE2 TO 'admin'@'%' WITH GRANT OPTION;
.
.
.
执行此代码会引发下一个错误。
[2024-11-23 20:59:09] [42000][1410] You are not allowed to create a user with GRANT
更改主机“解决”了错误,但我想将执行限制在本地主机。我不知道是否只需像这样添加新用户。
CREATE USER IF NOT EXISTS 'admin'@'127.0.0.1' IDENTIFIED WITH 'caching_sha2_password' BY 'my_password';
###########################
### STORED PROCEDURES ###
###########################
GRANT EXECUTE ON MY_DATABASE.* TO 'admin'@'127.0.0.1';
###########################
### SELECT ###
###########################
GRANT SELECT ON MY_DATABASE.MY_TABLE1 TO 'admin'@'127.0.0.1' WITH GRANT OPTION;
GRANT SELECT ON MY_DATABASE.MY_TABLE2 TO 'admin'@'127.0.0.1' WITH GRANT OPTION;
.
.
.
或者是否有另一种方法,无需重复用户定义