我一直在按照手册在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

然后我做了

cd ~/Desktop/iPDC-v1.3.1/DBServer-1.1
mysql -uroot -proot <"Db.sql"

我最终得到以下错误消息。

错误1045(28000):拒绝访问用户'root'@'localhost'(使用密码:YES)

我该如何修复它并继续?


当前回答

我以root用户($SUDO)安装MySQL,得到了同样的问题

以下是我的解决方法:

sudo cat /etc/mysql/debian.cnf This will show details as: # Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock Above we can see the password. But we are just going to use(GUx0RblkD3sPhHL5) that in the prompt. `mysql -u debian-sys-maint -p Enter password: ` Now provide the password (GUx0RblkD3sPhHL5). Now exit from MySQL and log in again as: `mysql -u root -p Enter password: `

现在提供新密码。这是所有。我们有新密码供以后使用。

这对我很管用。

其他回答

在最近的MySQL版本中,MySQL中没有任何密码。用户表。

所以你需要执行ALTER USER。将这一行命令放入文件中。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

并以init文件的形式执行(以root或mysql用户):

mysqld_safe --init-file=/home/me/mysql-init &

MySQL服务器需要停止才能启动mysqld_safe。

另外,加载这个init文件的AppArmor权限可能也有问题。阅读更多在AppArmor和MySQL。

我在Ubuntu 18.04 (Bionic Beaver) LTS和MySQL服务器版本5.7.27-0ubuntu0.18.04.1 (Ubuntu)时遇到了这个问题。

我的解决方案是(以root身份运行sudo -i):

mysql <<-EOSQL
  use mysql;
  update user set plugin="mysql_native_password" where User='root';
  FLUSH PRIVILEGES;
EOSQL

mysqladmin -u root password new_pw

在我的情况下,我发现我的根密码在日志文件“mysqld.log”,路径“/var/log”。

在我运行命令“mysql -u root -p”后,我输入我的root密码,我在/var/log/mysql .log中找到。

注意:对于MySQL 5.7+,请参见Lahiru对这个问题的回答。这包含了更多的最新信息。

对于MySQL < 5.7:

默认root密码为空(即空字符串),而不是root。所以你可以登录为:

mysql -u root

安装完成后,您显然应该更改root密码:

mysqladmin -u root password [newpassword]

在大多数情况下,您还应该在广泛使用数据库之前设置个人用户帐户。

如果你把MySQL作为Docker镜像的一部分(比如在6606端口上),而Ubuntu安装(在3306端口上),指定端口是不够的:

mysql -u root -p -P 6606

将把:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

因为默认情况下它试图连接到localhost,指定您的本地IP地址可以修复这个问题:

mysql -u root -p -P 6606 -h 127.0.0.1