ubuntu服务器16.04中mysql的默认密码

问题描述 投票:21回答:7

我已经安装了ubuntu 16.04服务器。默认安装Mysql服务器。当我尝试使用mysql -u root -p访问mysql时,我无法登录到mysql,因为我没有密码。有没有默认密码?

我也尝试过--skip-grant-tables,即使这样也行不通。即使尝试使用mysql -u root登录也是失败的。

mysql ubuntu passwords ubuntu-16.04 ubuntu-server
7个回答
64
投票

这就是你要找的东西: sudo mysql --defaults-file=/etc/mysql/debian.cnf 基于Debian的Linux上的MySql通常使用带有凭据的配置文件。


37
投票

默认情况下,Mysql将root用户的身份验证插件设置为auth_socket,这需要系统用户名和db用户名相同。

具体来说,以root或sudo -i身份登录,只需键入mysql,您将以mysql root身份登录,然后您可以创建其他操作用户。

如果你在主机上没有root,我想你不应该被允许以root用户身份登录mysql?


29
投票

我在Ubuntu 18.10上安装了全新的mysql-server,无法使用默认密码登录。然后我才知道默认情况下root用户使用auth_socket进行身份验证。因此在插件改为mysql_native_password的答案中,我们可以使用mysql默认密码

$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf

你可以在那里找到以下几行

user     = debian-sys-maint
password = password_for_the_user

然后:

$ mysql -u debian-sys-maint -p
Enter password: 

输入debian.cnf的密码

mysql> USE mysql
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT; 

或者:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

要么:

//对于MySQL 5.7+

mysql>UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';

14
投票

您可以通过使用--skip-grant-tables运行服务器并通过以root身份或使用sudo运行以下命令而无需密码登录来简单地重置root密码:

service mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root

mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

# service mysql stop
# service mysql start
$ mysql -u root -p

5
投票
  1. 第一个你应该停止mysql
  2. 使用此命令sudo mysqld_safe --skip-grant-tables --skip-networking &
  3. 然后输入mysql -u root尝试这种方式,我已经用这种方法解决了我的问题。

3
投票

我认为另一个值得关注的地方是/var/lib。如果你去那里你可以看到三个具有'有趣'权限的mysql文件夹:

user   group 
mysql  mysql

以下是我用root密码解决问题的方法:

跑完之后

sudo apt-get purge mysql*
sudo rm -rf /etc/mysql

我还运行了以下内容(而不是my_username放置你的):

cd /var/lib
sudo chown --from=mysql <my_username> mysql* -R
sudo rm -rf mysql*

然后:

sudo apt-get install mysql-server

这促使我选择了一个新的root密码。我希望它有所帮助


1
投票

只需运行sudo dpkg-reconfigure mysql-server-5.7

您可以通过运行dpkg --get-selections | grep mysql-server找到已安装的版本


1
投票

虽然这是一个老问题,但我们中的一些人仍然很难找到答案。至少我做到了。请不要遵循所有冗长的解决方案。您可以通过在mysql命令之前添加sudo,以root身份登录到您的mysql而不提供任何密码(前提是它是全新的安装,或者您的安装后没有更改密码)。 $sudo mysql -uroot -p mysql> 这是因为mysql在其中一个最新版本中更改了安全模型。

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.