MariaDB安装时没有密码提示

时间:2015-06-13 06:58:36

标签: passwords root mariadb

我已经使用Ubuntu软件中心或命令提示符(apt-get install maraidb-server)从Ubuntu 15.04存储库安装了mariadb,但没有为root用户提供密码。 现在我可以在没有密码的情况下在命令行上连接到mysql,但是使用Mysql-Workbench或python mysqldb库连接失败了“用户'root拒绝访问'@'localhost'”消息

6 个答案:

答案 0 :(得分:48)

sudo mysql -u root

[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
[mysql] \q

答案 1 :(得分:8)

sudo mysql -u root

[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
[mysql] \q

这需要遵循以下命令

# mysql_secure_installation

答案 2 :(得分:3)

如果从localhost访问,root通常具有无密码访问权限,我建议不要单独使用此设置。

我还建议您创建权限较少的用户,并允许该用户远程登录。

create user my_admin identified by '12345';
create database my_database;
grant all on my_database.* to my_admin;

通过这种方式,您可以获得更高的安全性。

如果确实需要从工作台等工具以root用户身份进行连接,则可以配置这些工具来创建ssh隧道并以localhost身份连接到数据库。

答案 3 :(得分:1)

正如@Pedru所注意到的,“对用户'root'@'localhost'的访问被拒绝”消息是由于Debian and Ubuntu enable the UNIX_SOCKET Authentication Plugin plugin by default允许无密码登录(另请参见Authentication Plugin - Unix Socket)。这不是安装问题。

这意味着,如果您在Linux Shell中键入mysql -u root -p,则root实际上是Linux的根目录(或链接到它的根,我不知道它是如何工作的)。因此,如果您使用另一个帐户登录Linux,则会收到错误消息: ERROR 1698 (28000): Access denied for user 'root'@'localhost'。如果尚未定义密码,最好键入sudo mysql -u root -psudo mysql -u root

答案 4 :(得分:1)

如果要切换到mysql_native_password身份验证插件,则可以使用

ALTER USER root@localhost IDENTIFIED VIA mysql_native_password;
SET PASSWORD = PASSWORD('new_password');

有关更多信息,请参见 https://mariadb.com/kb/en/authentication-plugin-unix-socket/

答案 5 :(得分:0)

对于大于或等于10.2.0的MariaDB版本,user3054067的响应是正确的。

对于低于10.2.0的MariaDB版本,您可以执行以下操作:

me$ sudo su -

root$ mysql -u root

MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> UPDATE mysql.user SET plugin='mysql_native_password' WHERE User='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

在另一个终端,

me$ mysql -u root -pnew_password
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 83
Server version: 10.0.38-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>