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

Deb*_*tor 37 mysql passwords ubuntu ubuntu-server ubuntu-16.04

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

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

Mao*_*dok 72

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

  • 这确实是大多数人想要的。谢谢 (2认同)

Yas*_*sii 41

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

$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf
Run Code Online (Sandbox Code Playgroud)

您可以在其中找到以下几行

user     = debian-sys-maint
password = password_for_the_user
Run Code Online (Sandbox Code Playgroud)

然后:

$ mysql -u debian-sys-maint -p
Enter password: 
Run Code Online (Sandbox Code Playgroud)

输入来自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; 
Run Code Online (Sandbox Code Playgroud)

要么:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Run Code Online (Sandbox Code Playgroud)

要么:

//对于MySQL 5.7+

mysql>UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
Run Code Online (Sandbox Code Playgroud)

-更新-

有时您需要重新启动mysql服务器。

sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)

要么

sudo systemctl restart mysql
Run Code Online (Sandbox Code Playgroud)

  • 执行此解决方案后,我必须重新启动mysql服务器。sudo服务mysql重新启动 (3认同)

Har*_*per 40

默认情况下,Mysql具有root用户的身份验证插件auth_socket,这要求系统用户名和db用户名相同.

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

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


Sha*_*yal 15

您可以通过使用--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
Run Code Online (Sandbox Code Playgroud)

  • 完成此操作后,我收到一条错误消息,提示“未加载插件'unix_socket'”。解决方案:/sf/answers/2651561461/(在“ update user”行之后添加“ update user set plugin =“ mysql_native_password”;`)。 (2认同)
  • 这应该是正确的答案,因为之前的答案已贬值 (2认同)

Ami*_*M75 14

请注意,在运行 MySQL 5.7(及更高版本)的 Ubuntu 系统中,root MySQL 用户默认设置为使用 auth_socket 插件而不是密码进行身份验证。您需要将其身份验证方法从 auth_socket 切换到 mysql_native_password

正如@BeNiza 所说,他们改变了安全模型。我做了以下步骤,它适用于 ubuntu 18.04 上的 mysql 5.7.27

sudo apt install mysql-server

MySQL数据库软件现已安装,但其配置尚未完成。

为了确保安装安全,MySQL 附带了一个脚本,该脚本会询问我们是否要修改一些不安全的默认值。通过键入以下内容启动脚本:

sudo mysql_secure_installation

您应该在每次提示时按下Y并按下该ENTER键。

如果您使用弱密码,这将导致问题

您可以通过在 mysql 命令之前添加 sudo 来简单地以 root 身份登录到您的 mysql,而无需提供任何密码。

sudo mysql

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-password';

如果您设置弱密码,您将看到以下错误:

ERROR 1819 (HY000):您的密码不符合当前的策略要求

mysql> FLUSH PRIVILEGES;

mysql> exit

注意:将您的 MySQL 根用户配置为使用密码进行身份验证后,您将无法再使用之前使用的 sudo mysql 命令访问 MySQL。相反,您必须运行以下命令: mysql -u root -p

输入刚才设置的密码后,会看到MySQL提示。


小智 9

  • 使用sudo mysql -u root -p,它可以让你输入任何密码,如果没有则使用sudo mysql
  • 如果您成功进入控制台,请执行以下操作。

删除 root 用户。

DROP USER 'root'@'localhost';
Run Code Online (Sandbox Code Playgroud)

再次创建它。

CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)

授予许可。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

重新启动 mysql 服务。

service mysql restart 
Run Code Online (Sandbox Code Playgroud)

如果还是无法进入控制台,就得重新安装mysql了。

sudo apt-get remove --purge mysql-server mysql-client mysql-common -y

sudo apt-get autoremove -y

sudo apt-get autoclean

sudo rm -rf /etc/mysql
Run Code Online (Sandbox Code Playgroud)

删除服务器上的所有 MySQL 文件:

sudo find / -iname 'mysql*' -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

安装mysql。

sudo apt update
sudo apt install mysql-server
Run Code Online (Sandbox Code Playgroud)

进行安装。

sudo mysql_secure_installation
Run Code Online (Sandbox Code Playgroud)
  • 我遇到这个问题的时候也做了同样的事情,希望有帮助!


BeN*_*iza 8

尽管这是一个古老的问题,但我们中仍有几个人仍在努力寻找答案。至少我做到了。请不要遵循所有冗长的解决方案。通过在mysql命令前添加sudo,您可以简单地以root用户身份登录mysql而无需提供任何密码(前提是这是全新安装,或者自安装以来尚未更改密码)。 $sudo mysql -uroot -p mysql> 这是因为mysql在最新版本之一中更改了安全模型。

希望这可以帮助


Oha*_*hen 8

带有 MySql 8.0Ubuntu 20.04 开始:该函数PASSWORD不再存在,因此正确的方法是:

  1. 登录到mysql sudo mysql -u root

  2. 更改密码:

USE mysql;
UPDATE user set authentication_string=NULL where User='root';
FLUSH privileges;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'My-N7w_And.5ecure-P@s5w0rd';
FLUSH privileges;
QUIT
Run Code Online (Sandbox Code Playgroud)

现在您应该能够使用mysql -u root -p(或使用用户名 root登录phpMyAdmin)和您选择的密码。

P,S:

您也可以使用用户登录debian-sys-maint,密码在文件中/etc/mysql/debian.cnf


Rub*_*ves 8

唯一对我有用的选项是此链接中描述的选项。

总而言之(以防网站宕机),它说:

安装 MySQL:

sudo apt update
sudo apt install mysql-server
Run Code Online (Sandbox Code Playgroud)

在下一个提示中,您将被要求为 MySQL root 用户设置密码。执行此操作后,脚本还会要求您删除匿名用户、限制 root 用户访问本地计算机并删除测试数据库。您应该对所有问题回答“Y”(是)。

sudo mysql_secure_installation
Run Code Online (Sandbox Code Playgroud)

然后

sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'very_strong_password';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

之后,您可以退出:

exit
Run Code Online (Sandbox Code Playgroud)

现在您可以轻松登录(请记住输入您的very_strong_password):

mysql -u root -p
# type the password now.
Run Code Online (Sandbox Code Playgroud)

在尝试上述选项数小时后,这是唯一对我有用的选项。


Ana*_*aja 7

在最新版本中,mySQL 使用auth_socket,因此要登录,您必须了解自动生成的用户凭据。或者如果您下载二进制版本,在安装过程中,您可以选择lagacy password.

在 linux debian 版本中安装 SQL

sudo apt install mysql-server
Run Code Online (Sandbox Code Playgroud)

知道密码

sudo cat /etc/mysql/debian.cnf
Run Code Online (Sandbox Code Playgroud)

现在登录

mysql -u debian-sys-maint -p
Run Code Online (Sandbox Code Playgroud)

使用密码来自 debian.cnf

如何查看可用的用户记录:

USE mysql
SELECT User, Host, plugin FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)

现在您可以创建一个新用户。使用以下命令:

use mysql;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'username'@'localhost';
flush privileges;
Run Code Online (Sandbox Code Playgroud)

列出特定 mysql 用户的授权

SHOW GRANTS FOR 'username'@'localhost';
Run Code Online (Sandbox Code Playgroud)

如何撤销特定 mysql 用户的所有授权

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'username'@'localhost';
Run Code Online (Sandbox Code Playgroud)

从用户帐户列表中删除/移除特定用户

DROP USER 'username'@'localhost';
Run Code Online (Sandbox Code Playgroud)

更多命令:

$ man 1 mysql
Run Code Online (Sandbox Code Playgroud)

请不要重置 root 的密码,而是创建一个新用户并授予权限。这是最佳做法。


Att*_*lop 6

从 Ubuntu 20.04 开始,使用默认的 MariaDB 10.3 包,这些是必要的步骤(重新混合来自该线程的早期答案):

  1. 以 root 身份登录 mysql: sudo mysql -u root
  2. 更新密码:
USE mysql;
UPDATE user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
UPDATE user set plugin="mysql_native_password" where User='root';
FLUSH privileges;
QUIT
Run Code Online (Sandbox Code Playgroud)
  1. sudo service mysql restart

之后,您可以使用新密码连接到本地 mysql: mysql -u root -p


小智 5

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