我刚刚在Ubuntu上安装了MySQL而root用户无法登录:)
如何恢复或查找密码?使用空格密码不起作用。
答案 0 :(得分:133)
您可以通过使用--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
现在您应该可以使用新密码以root用户身份登录。
也可以在重置密码的用户的/home/$USER/.mysql_history
或/root/.mysql_history
中找到重置密码的查询,但上述内容始终有效。
注意:在MySQL 5.7之前,该列被称为password
而不是authentication_string
。用
mysql> update user set password=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
答案 1 :(得分:19)
我意识到这是一个老线程,但我想我会用我的结果更新它。
Alex,听起来你通过元包'mysql-server'安装了MySQL服务器。这将通过引用安装最新的软件包(在我的例子中,mysql-server-5.5)。我和你一样,在设置时没有按照我的预期提示输入MySQL密码。我想有两个答案:
解决方案#1:用它的全名安装MySQL:
$ sudo apt-get install mysql-server-5.5
或者
解决方案#2:重新配置包...
$ sudo dpkg-reconfigure mysql-server-5.5
您必须具体说明完整的包名称。使用元包'mysql-server'对我来说没有预期的结果。我希望这有助于某人:)
答案 2 :(得分:7)
Ubuntu 14.04上的MySQL 5.5需要与推荐here略有不同的命令。简而言之:
sudo /etc/init.d/mysql stop
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
mysql -u root
然后从MySQL提示
FLUSH PRIVILEGES;
SET PASSWORD FOR root@'localhost' = PASSWORD('password');
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
FLUSH PRIVILEGES;
the cited source也提供了另一种方法。
答案 3 :(得分:6)
Sub CreatePivotTable1()
Dim maxfromROW As Integer
Set wb = ThisWorkbook
i = 1
Do Until Cells(1 + i, 1).Value = "This row"
i = i + 1
Loop
maxfromROW = Application.WorksheetFunction.HLookup(99, Range("A4:O20"), i + 1, False)
wb.Worksheets("Hárok1").Range("B20").Value = maxOVB2
End Sub
答案 4 :(得分:3)
对于RHEL-mysql 5.5:
/etc/init.d/mysql stop
/etc/init.d/mysql start --skip-grant-tables
mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
mysql -uroot -pnewpwd
mysql>
答案 5 :(得分:1)
Hmm Mysql 5.7.13重置我所做的全部是:
$ sudo service mysql stop
停止mysql
$ mysqld_safe --skip-grant-tables &
启动mysql
$ mysql -u root
就像正确答案一样。然后我所做的就是做@eebbesen做的事。
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('NEW-password-HERE');
希望它可以帮助那里的任何人:)
答案 6 :(得分:1)
有一个简单的解决方案。
MySql 5.7带有匿名用户,因此您需要重新配置MySQL服务器。
您可以使用此命令
尝试查找临时通行证:
grep 'temporary password' /var/log/mysqld.log
然后:
sudo mysql_secure_installation
在此链接上是有关mysql 5.7的更多信息
https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
答案 7 :(得分:1)
这是设置root密码的最佳方法:Source Link第3步对我来说非常有效。
命令给您
- sudo mysql
- 从mysql.user中选择用户,身份验证字符串,插件,主机;
- 使用mysql_native_password通过'password'标识ALTER USER'root'@'localhost';
- 冲洗特权;
- 从mysql.user中选择用户,身份验证字符串,插件,主机;
- 退出
现在,您可以为root用户使用“ 密码”密码:
- mysql -u根-p
- 创建用户'sammy'@'localhost'由'password'标识;
- 在上授予所有特权。通过GRANT选项将其“ sammy” @“ localhost”;
- 冲洗特权;
- 退出
测试您的MySQL服务和版本:
systemctl status mysql.service
sudo mysqladmin -p -u root version
答案 8 :(得分:0)
在MYSQL 5.7下,如果您使用mysql进行开发,只需:
1.kill mysql:
$ sudo service mysql stop
2.在-skip-grant-tables模式下启动mysql:
$ sudo mysqld_safe --skip-grant-tables
并且,您可以尝试更改" skip-grant-table"下的用户表。模式,但我失败了。
所以,这只是一种解决方法。
答案 9 :(得分:0)
实际上非常简单。您不必经历很多事情。 只需在终端中运行以下命令并按照屏幕上的说明进行操作即可。
sudo mysql_secure_installation
答案 10 :(得分:0)
在这里我要作一个假设,因为我不确定。我认为我的mysql(在最新的20.04版本上运行)甚至没有根目录。我试过设置一个,我记得有问题。我怀疑没有root用户,如果您以root用户身份登录,它将自动以mysql root用户身份登录。
我为什么这么认为?因为当我执行mysql -u root -p时,它将接受任何密码,并在以root用户身份登录时以mysql root用户身份登录。
我已经确认在非root用户上尝试该操作无效。
我喜欢这个模特。
罗恩