我想在MariaDB上更改用户(权限有限)的密码,而无需以root用户身份登录我试过:
ALTER USER CURRENT_USER() IDENTIFIED BY 'newpassword';
6bc51xsx1#
要允许用户更改自己的密码而不授予他们创建或修改其他用户帐户的能力,您可以授予用户SET PASSWORD权限。您可以通过以具有足够权限的用户(如root用户)身份登录并执行以下SQL命令来授予此权限:
GRANT SET PASSWORD ON *.* TO 'username'@'localhost';
用要更改其密码的用户名替换“username”。此命令赠款用户更改自己密码的能力,但不给予他们任何其他管理权限。运行此命令后,用户应能够通过执行以下SQL命令更改其密码:
SET PASSWORD = 'newpassword';
dsekswqp2#
我想出来的解决办法是:创建一个存储过程来检查您的主机和用户名,并更改该用户的密码,如下所示:
delimiter %% CREATE PROCEDURE alter_password(newpassword varchar(50)) BEGIN declare username varchar(256); declare hostname varchar(256); SELECT SUBSTRING_INDEX(USER(),'@',1) INTO username; SELECT SUBSTRING_INDEX(USER(),'@',-1) INTO hostname; SET @A := CONCAT('SET PASSWORD FOR ''', username,'''@''%'' = PASSWORD(''', newpassword, ''');'); PREPARE alter_user_stmt FROM @A; EXECUTE alter_user_stmt; DEALLOCATE PREPARE alter_user_stmt; END; %%
您可以通过以下方式创建此过程:以具有足够权限的用户(如root用户)身份登录,然后使用以下命令授予用户对该过程的执行权限:
GRANT EXECUTE ON PROCEDURE alter_password TO 'username'@'hostname';
也许你可以使用准备好的语句,如果你想自动化它,那么用户'username'@'hostname'可以编辑他自己的密码,而不必给予他们任何其他的管理权限:
CALL alter_password('otherpassword');
2条答案
按热度按时间6bc51xsx1#
要允许用户更改自己的密码而不授予他们创建或修改其他用户帐户的能力,您可以授予用户SET PASSWORD权限。
您可以通过以具有足够权限的用户(如root用户)身份登录并执行以下SQL命令来授予此权限:
用要更改其密码的用户名替换“username”。此命令赠款用户更改自己密码的能力,但不给予他们任何其他管理权限。
运行此命令后,用户应能够通过执行以下SQL命令更改其密码:
dsekswqp2#
我想出来的解决办法是:创建一个存储过程来检查您的主机和用户名,并更改该用户的密码,如下所示:
您可以通过以下方式创建此过程:以具有足够权限的用户(如root用户)身份登录,然后使用以下命令授予用户对该过程的执行权限:
也许你可以使用准备好的语句,如果你想自动化它,那么用户'username'@'hostname'可以编辑他自己的密码,而不必给予他们任何其他的管理权限: