ubuntu server 16.04 mysql的默认密码

Posted

技术标签:

【中文标题】ubuntu server 16.04 mysql的默认密码【英文标题】:Default password of mysql in ubuntu server 16.04 【发布时间】:2017-07-14 06:41:31 【问题描述】:

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

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

【问题讨论】:

请批准解决您的查询的答案,以便对社区有所帮助。 我刚刚为这个问题发布了一个新的WORKING答案。在 18.04 上,没有其他建议对我有用。 ***.com/questions/33991228/… What is the default root pasword for MySQL 5.7的可能重复 @Debashisenator 如果您觉得我的回答有帮助,如果您接受我的回答,我将不胜感激。谢谢! 【参考方案1】:

编辑:

您可以使用用户debian-sys-maint登录,该用户拥有所有预期的权限,密码在文件/etc/mysql/debian.cnf


原答案:

截至 Ubuntu 20.04 with MySql 8.0 :函数PASSWORD 不再存在,因此正确的方法是:

    使用sudo mysql -u root登录mysql

    修改密码:

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

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

【讨论】:

【参考方案2】:

在 MySQL 8.0.15 上(也可能比这更早):PASSWORD() 函数不再起作用,所以你必须这样做:

确保您首先停止了 MySQL(转到:“系统偏好设置”>>“MySQL”并停止 MySQL)。

在具有权限绕过的安全模式下运行服务器:

sudo mysqld_safe --skip-grant-tables
mysql -u root
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

然后

mysql -u root
ALTER USER 'root'@'lo`enter code here`calhost' IDENTIFIED WITH caching_sha2_password BY 
'yourpasswd';

最后,重新启动你的 MySQL。

【讨论】:

【参考方案3】:

对于新安装,生成root 的mysql 密码并写入日志/var/log/mysqld.log。 如果您尝试自动化 mysql 解决方案,您可以使用变量中的密码:

mysql_pass=$(sudo grep -oP "temporary password is generated for root@localhost: \K(.*)" /var/log/mysqld.log)

mysql -uroot -p"$mysql_pass" < somescript.sql

【讨论】:

【参考方案4】:

以下给了我新安装的 mysql 的信誉

sudo cat /etc/mysql/debian.cnf

我尝试使用工作台进行连接,它为我解决了以下问题:安装工作台

sudo apt-get install mysql-workbench

【讨论】:

【参考方案5】:

这在带有 mysql 8 的 Ubuntu 20.04 上对我有用,奇怪的散列是因为在 mysql 8(或更早版本?)中删除了本机 PASSWORD() 函数?

UPDATE mysql.user SET 
 plugin = 'mysql_native_password',
 Host = '%',
 authentication_string = CONCAT('*', UPPER(SHA1(UNHEX(SHA1('insert password here'))))) 
WHERE User = 'root';
FLUSH PRIVILEGES;

【讨论】:

这在 ubuntu 20.04 和 mysql 8 上对我有用。这里的所有其他答案都没有。【参考方案6】:

对我有用的唯一选项是this link 中描述的选项。

总而言之(以防网站出现故障),它说:

安装 MySQL:

sudo apt update
sudo apt install mysql-server

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

sudo mysql_secure_installation

然后

sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'very_strong_password';
FLUSH PRIVILEGES;

之后就可以退出了:

exit

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

mysql -u root -p
# type the password now.

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

【讨论】:

【参考方案7】:

如果你用apt install mysql安装你的mysql。 你可以用sudo mysql登录你的mysql。

【讨论】:

【参考方案8】:

早期版本允许 root 密码为空,但在较新版本中,root 密码设置为安装期间的 admin(main) 用户登录密码。

【讨论】:

【参考方案9】:

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

    以root身份登录mysql:sudo mysql -u root 更新密码:
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
    sudo service mysql restart

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

【讨论】:

【参考方案10】:

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

在 linux debian 版本中安装 SQL

sudo apt install mysql-server

知道密码

sudo cat /etc/mysql/debian.cnf

现在登录

mysql -u debian-sys-maint -p

使用来自debian.cnf的密码

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

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

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

use mysql;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'username'@'localhost';
flush privileges;

列出特定 mysql 用户的授权

SHOW GRANTS FOR 'username'@'localhost';

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

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'username'@'localhost';

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

DROP USER 'username'@'localhost';

更多命令:

$ man 1 mysql

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

【讨论】:

【参考方案11】:

我在 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';

--更新--

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

sudo service mysql restart

sudo systemctl restart mysql

【讨论】:

你应该添加一些细节,说明 OP 做错了什么,以及为什么这个解决方案有效 您应该将该上下文作为编辑添加到您的答案中:) 执行此解决方案后,我不得不重新启动 mysql 服务器。 sudo service mysql restart 在最新版本的 ubuntu 上安装许多 mysql-servers 软件包后,这个答案对我来说是唯一的工作。谢谢。 对我来说效果很好。谢谢。【参考方案12】:

请注意,在运行 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提示。

【讨论】:

谢谢你,你让我开心! :) 太棒了。终于……效果很好。【参考方案13】:

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

希望对你有帮助

【讨论】:

【参考方案14】:

Mysql默认有root用户的认证插件auth_socket,要求系统用户名和db用户名相同。

具体来说,以root或sudo -i登录,输入mysql,你将登录mysqlroot,然后可以创建其他操作用户。

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

【讨论】:

【参考方案15】:

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

【讨论】:

【参考方案16】:

我认为另一个值得关注的地方是/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 密码。 希望对你有帮助

【讨论】:

删除 /etc/mysql 会阻止 mysql-server 在 19.04 中重新安装 你所说的关于 19.04 的内容没有意义。除了上述步骤之外,我认为您做错了什么。另外,仅供参考:“Ubuntu 19.04 将于 2019 年 4 月 18 日发布”,今天是 2019 年 4 月 5 日 另外,问题是“ubuntu server 16.04 中 mysql 的默认密码”我没有看到 19.04 应该说 19.04 beta。你是对的,这可能不适用于 16.04。在 19.04 beta 中,(重新)安装 mysql-server 不会提示输入 root 密码。而且我确实清除了 mysql-server*,而不是 mysql*(这会导致卸载太多软件包),并且 /etc/mysql 目录是由 mysql-common 创建的,因此在不删除该软件包的情况下手动删除它会阻止 mysql-安装服务器。【参考方案17】:

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

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

【讨论】:

此命令没有提供设置root密码的选项 此命令没有提供设置root密码的选项 此命令没有提供设置root密码的选项【参考方案18】:

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

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

【讨论】:

执行此操作后,我收到一条错误消息,提示“未加载插件 'unix_socket'”。解决方案:***.com/a/37879449/2934081(在update user 行后添加update user set plugin="mysql_native_password"; )。 这应该是正确的答案,因为以前的已经贬值了【参考方案19】:
    首先你应该停止mysql 使用这个命令sudo mysqld_safe --skip-grant-tables --skip-networking &amp; 然后输入mysql -u root 试试这个方法,我已经用这个方法解决了我的问题。

【讨论】:

没用。我不得不创建 /var/run/mysqld,但我最终得到了另一个错误。来自 pid 文件 /var/run/mysqld/mysqld.pid 的 mysqld_safe mysqld 结束。 syslog 说:Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock。必须 chown mysql:mysql 到 /var/run/mysqld 文件夹然后它工作! 我收到错误,因为 UNIX 套接字文件的 mysqld_safe Directory '/var/run/mysqld' 在第二点不存在

以上是关于ubuntu server 16.04 mysql的默认密码的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Ubuntu 16.04 上安装 MySQL

ubuntu 16.04安装mysql server入门

ubuntu 16.04安装mysql-server_5.7.17

Ubuntu Server 16.04 安装MySQL并设置远程访问

ubuntu16.04 彻底卸载MySQL

ubuntu 16.04下安装MySQL