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

我该如何修复它并继续?


当前回答

在服务器初始启动时,假设服务器的数据目录为空,会发生以下情况:

完成服务器的初始化。 在data目录下生成SSL证书和密钥文件。 安装并启用validate_password插件。 创建超级用户帐户“root”@“localhost”。超级用户的密码被设置并存储在错误日志文件中。

要显示它,使用以下命令:

shell> sudo grep 'temporary password' /var/log/mysqld.log

请使用临时密码登录,并自定义超级用户密码,尽快修改root用户密码:

shell> mysql -u root -p

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

其他回答

在Ubuntu 16.04 (Xenial Xerus)和MySQL 5.7.13版本中,我能够通过以下步骤解决这个问题:

Follow the instructions from section B.5.3.2.2 Resetting the Root Password: Unix and Unix-Like Systems MySQL 5.7 reference manual When I tried #sudo mysqld_safe --init-file=/home/me/mysql-init & it failed. The error was in /var/log/mysql/error.log: 2016-08-10T11:41:20.421946Z 0 [Note] Execution of init_file '/home/me/mysql/mysql-init' started. 2016-08-10T11:41:20.422070Z 0 [ERROR] /usr/sbin/mysqld: File '/home/me/mysql/mysql-init' not found (Errcode: 13 - Permission denied) 2016-08-10T11:41:20.422096Z 0 [ERROR] Aborting

mysql-init的文件权限不是问题。我们需要编辑AppArmor权限。

Edit by sudo vi /etc/apparmor.d/usr.sbin.mysqld .... /var/log/mysql/ r, /var/log/mysql/** rw, # Allow user init file /home/pranab/mysql/* r, # Site-specific additions and overrides. See local/README for details. #include <local/usr.sbin.mysqld> } Do sudo /etc/init.d/apparmor reload Start mysqld_safe again. Try step 2 above. Check file /var/log/mysql/error.log. Make sure there is no error and the mysqld is successfully started. Run mysql -u root -p Enter password: Enter the password that you specified in mysql-init. You should be able to log in as root now. Shutdown mysqld_safe by sudo mysqladmin -u root -p shutdown Start mysqld the normal way by sudo systemctl start mysql

在最近的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。

在my.cnf文件的底部添加以下两行代码:

[mysqld]    
skip-grant-tables    

这应该有用。

我尝试了Lahiru的正确答案,但它不能与macOS v10.14 (Mojave)上的MySQL服务器版本8.0.16 (Community)一起工作。

我遵循Sameer Choudhary的指示,并进行了一些调整,我能够更改根密码,并从本地主机启用根访问。

所有这些都不是必需的。如果您正在使用Homebrew在Mac OS上安装:

brew install mysql

虽然上面的答案(使用mysqladmin)在macOS v10.15 (Catalina)上有效,但在Ubuntu上无效。然后我尝试了许多其他的选项,包括MySQL的安全启动,但都不起作用。

下面是一个例子:

至少在这个版本中,我得到了5.7.28-0ubuntu0.18.04.4的答案缺少IDENTIFIED WITH mysql_native_password。5.7.28是当前LTS的默认设置,因此应该是大多数新系统的默认设置(直到Ubuntu 20.04 (Focal Fossa) LTS问世)。

我发现不能设置root密码MySQL服务器,现在应用

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';

这是可行的。