问题描述
我是一名电气工程师,主要研究电源系统而不是编程。最近,我一直在遵循手册在Ubuntu上安装软件套件。实际上,我完全不了解mySQL
。我已经在Ubuntu上完成了以下安装。
sudo apt-get update
sudo apt-get install mysql-server-5.5
sudo apt-get install mysql-client-5.5
sudo apt-get install mysql-common
sudo apt-get install glade
sudo apt-get install ntp
那我做
me@ubuntu:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"
我最终收到以下错误消息。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
我该如何修复并继续?
最佳方案
注意:对于MySQL 5.7+,请参阅answer from @Lahiru。那包含更多当前信息。
对于MySQL< 5.7:
默认的root密码为空白(即空字符串),而不是root
。因此,您只需登录为:
mysql -u root
您显然应该在安装后更改root密码
mysqladmin -u root password [newpassword]
在大多数情况下,在广泛使用数据库之前,您还应该设置单个用户帐户。
次佳方案
我可以通过执行以下语句解决此问题
sudo dpkg-reconfigure mysql-server-5.5
这将更改根密码。
第三种方案
您必须重设密码! Mac osx(已测试并工作)和ubuntu的步骤
使用停止MySQL
sudo service mysql stop
要么
$ sudo /usr/local/mysql/support-files/mysql.server stop
以安全模式启动它:
$ sudo mysqld_safe --skip-grant-tables --skip-networking
(以上是整个命令)
在此过程完成之前,这将是一个持续执行的命令,因此请打开另一个 shell 程序/终端窗口,无需密码即可登录:
$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
根据@IberoMedia的评论,对于较新版本的MySQL,该字段称为authentication_string
:
mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';
使用以下命令启动MySQL:
sudo service mysql start
要么
sudo /usr/local/mysql/support-files/mysql.server start
您的新密码是’password’。
第四种方案
我知道这是一个老问题,但我认为这可能会对某人有所帮助。最近,我遇到了同样的问题,但就我而言,我记得我的密码还可以,但是它一直给我同样的错误。我尝试了很多解决方案,但仍然没有帮助,然后我尝试了
mysql -u root -p
之后,它要求您输入这样的密码
Enter password:
然后输入我使用的密码。就这样
第五种方案
假设服务器的数据目录为空,则在服务器首次启动时会发生以下情况:
-
服务器已初始化。
-
SSL证书和密钥文件在数据目录中生成。
-
validate_password插件已安装并启用。
-
超级用户帐户’root’@’localhost’已创建。超级用户的密码已设置并存储在错误日志文件中。
要显示它,请使用以下命令:
shell> sudo grep 'temporary password' /var/log/mysqld.log
通过使用生成的临时密码登录并尽快更改root密码,并为超级用户帐户设置自定义密码:
shell> mysql -u root -p #Login to root user with some password
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!';
第六种方案
如果问题仍然存在,请尝试强制更改通行证
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root
设置新的MySQL root用户密码
use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;
停止MySQL服务器:
/etc/init.d/mysql stop
启动MySQL服务器并对其进行测试:
mysql -u root -p
第七种方案
密码丢失时会发生这种情况。
忘记密码时更改密码的步骤:
-
停止MySQL服务器(在Linux上):
sudo systemctl stop mysql
-
在不加载授权表或启用网络的情况下启动数据库:
sudo mysqld_safe --skip-grant-tables --skip-networking &
该命令末尾的&符号将使此过程在后台运行,因此您可以继续使用终端并运行#mysql -u root,而不会要求输入密码。
如果出现如下错误:
2018-02-12T08:57:39.826071Z mysqld_safe UNIX套接字文件的目录’/var/run/mysqld’不存在。 mysql -u root错误2002(HY000):无法通过套接字’/var/run/mysqld/mysqld.sock'(2)[1] +出口1连接到本地MySQL服务器
-
制作MySQL服务目录。
sudo mkdir /var/run/mysqld
授予MySQL用户写入服务目录的权限。
sudo chown mysql: /var/run/mysqld
-
在步骤2中运行相同的命令以在后台运行mysql。
-
运行mysql -u root,您将无需输入密码即可获得mysql控制台。
运行这些命令
FLUSH PRIVILEGES;
对于MySQL 5.7.6及更高版本
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
对于MySQL 5.7.5及更高版本
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
如果ALTER USER命令不起作用,请使用:
UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
现在退出
-
停止手动启动的实例
sudo kill `cat /var/run/mysqld/mysqld.pid`
-
重启mysql
sudo systemctl start mysql
第八种方案
我遇到了这个非常烦人的问题,发现了许多无效的答案。我遇到的最好的解决方案是完全卸载mysql并re-install。在re-install上,您设置了root密码,从而解决了该问题。
sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean
我在其他地方找到了此代码,因此我不认为它。但这有效。卸载后要安装mysql,我认为Digital Ocean上有很好的教程。为此检查我的要旨。 https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096
第九种方案
我正在使用Ubuntu-16.04:已安装mysql-5.7。我遇到了同样的问题:root用户的登录被拒绝。
尝试了以下步骤:
-
dpkg --get-selections | grep mysql
(获取mysql的版本)。 -
dpkg-reconfigure mysql-server-5.7
-
mysql -u root -p
如果没有-p,则不会提示您输入密码。进入后,您可以按照以下步骤使用密码创建用户:
CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';
GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;
从根目录退出,然后从上面给出的登录。
mysql -u <your_new_username> -p
由于某些原因,仅键入mysql仍然无法正常工作。完全没有我建议养成使用mysql -u <name> -p
的习惯。
第十种方案
刚进入终端
mysql -u root -p。比它会询问密码