tha*_*hpt 30 mysql passwords login mariadb
我想通过设置root密码来保护mysql.我成功重置了root密码:
MariaDB [(none)]> select Host, User, Password from mysql.user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | *58319282EAB9E38D49CA25844B73DA62C80C2ABC |
+-----------+------+-------------------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
但是,在刷新权限后,重新启动Mysql,我仍然可以在不输入密码的情况下登录mysql(在本地主机上).
root@myhost:/# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.0.29-MariaDB SLE 12 SP1 package
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Run Code Online (Sandbox Code Playgroud)
连接时如何强制mysql询问密码?谢谢 !
Sak*_*oto 56
在MySQL表上,你有一个名为plugin的列:
MariaDB [(none)]> SELECT host, user, password, plugin FROM mysql.user LIMIT 0,1;
+-----------+------+-------------------------------------------+--------+
| host | user | password | plugin |
+-----------+------+-------------------------------------------+--------+
| localhost | root | * | |
+-----------+------+-------------------------------------------+--------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
如果我没记错的话,mariaDB安装的默认插件是'console'或'unix_socket',这个插件允许你在没有密码的情况下从控制台输入.但也禁用密码验证,您无法从其他客户端连接.
只需使用空('')值更新插件字段,然后使用FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
有了这个,你就解决了问题.
小智 7
我发现我需要改变这个:
UPDATE mysql.user SET plugin = 'auth_socket' WHERE user = 'root' AND host = 'localhost';
Run Code Online (Sandbox Code Playgroud)
到
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND host = 'localhost';
Run Code Online (Sandbox Code Playgroud)
那是密码 AFAICT 的插件。
小智 6
对于服务器版本:10.7.5-MariaDB
我通过以下步骤解决了这个问题:
使用命令SHOW GRANTS FOR 'root'@'localhost';
如果您看到类似于此的一行
授予 上的所有权限。使用'A_HASH_PASSWORD' 或带有授予选项的 unix_socket 通过 mysql_native_password 识别
root@localhost
这意味着您的 root 用户可以通过密码或 unix_socket 两种方法进行身份验证。
现在你可以使用命令
GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` IDENTIFIED BY 'YOUR_RAW_PASSWORD' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
问题解决了!
| 归档时间: |
|
| 查看次数: |
19724 次 |
| 最近记录: |