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 &
然后输入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-server_5.7.17