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

我该如何修复它并继续?


当前回答

虽然上面的答案(使用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';

这是可行的。

其他回答

从这个链接复制,我有同样的问题,这解决了问题。在我们为数据库添加密码之后,我们需要添加-p(基于密码的登录),然后输入密码。否则,它将返回以下错误:

mysql -u root -p

在我的情况下,我试图传递一个shell命令到docker容器。在这种情况下,只有第一个词被解释。确保你没有在运行:

mysql

相对于:

mysql -uroot -ppassword schemaname

也许可以试着引用:

'mysql -uroot -ppassword schemaname'

我所面临的错误是:

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

这是一个端口运行的问题。

默认情况下,MySQL运行在3306端口上。

你可以通过运行来检查

在32位系统中: sudo / opt / lampp / manager-linux.run 在64位系统中: sudo / opt / lampp / manager-linux-x64.run

然后点击Configure按钮。

在我的示例中,端口运行在3307上,我使用了该命令

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

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

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

Shell > sudo grep '临时密码' /var/log/mysqld.log

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

Shell > mysql的root -p

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

当您的密码丢失时就会发生这种情况。

忘记密码时的修改步骤:

Stop MySQL Server (on Linux): sudo systemctl stop mysql Start the database without loading the grant tables or enabling networking: sudo mysqld_safe --skip-grant-tables --skip-networking & The ampersand at the end of this command will make this process run in the background, so you can continue to use your terminal and run mysql -u root (as root). It will not ask for a password. If you get error like as below: 2018-02-12T08:57:39.826071Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists. mysql -u root ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) [1]+ Exit 1 Make MySQL service directory. sudo mkdir /var/run/mysqld Give MySQL user permission to write to the service directory. sudo chown mysql: /var/run/mysqld Run the same command in step 2 to run MySQL in background. Run mysql -u root. You will get the MySQL console without entering a password. Run these commands FLUSH PRIVILEGES; For MySQL 5.7.6 and newer ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; For MySQL 5.7.5 and older SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password'); If the ALTER USER command doesn't work use: UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost'; Now exit To stop the instance started manually: sudo kill `cat /var/run/mysqld/mysqld.pid` Restart MySQL sudo systemctl start mysql