我一直在按照手册在 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' 的访问被拒绝(使用密码:是)
我该如何修复它并继续?
注意:对于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
这将更改root密码。
dpkg --get-selections | grep sql
获取您的版本
sudo: dpkg-reconfigure: command not found
。有什么建议吗?
你必须重设密码! Mac OS X(经过测试和工作)和 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
您的新密码是“密码”。
注意:对于 MySQL > 5.7 的版本,试试这个:
update mysql.user set authentication_string='password' where user='root';
--skip-grant-tables
与 --skip-networking
结合使用以防止远程客户端连接。 哦,而且,这个对我不起作用。这就是我来这里的原因:p
--
我建议使用 dpkg --get-selections | grep mysql-server-
来获取您的确切 MySQL 版本,然后使用 sudo dpkg-reconfigure mysql-server- 5.x(用您的服务器版本替换 5.x,顺便说一句)。我以这种精确度评论了@Divz 的答案,但它被几个“感谢”评论所掩盖。
sudo mysql restart
更改为 sudo service mysql restart
,它就像一个魅力。“我已经编辑了你的帖子。
我最近遇到了同样的问题,但就我而言,我记得我的密码很好,但它一直给我同样的错误。我尝试了很多解决方案,但仍然没有帮助。然后我尝试了这个:
mysql -u root -p
之后它会要求您输入这样的密码
Enter password:
然后我输入了我使用的密码。就这样。
当您的密码丢失时会发生这种情况。
忘记密码时更改密码的步骤:
停止 MySQL 服务器(在 Linux 上): sudo systemctl stop mysql 在不加载授权表或启用网络的情况下启动数据库: sudo mysqld_safe --skip-grant-tables --skip-networking & 此命令末尾的 & 符号将使进程在后台运行,因此您可以继续使用终端并运行 mysql -u root(以 root 身份)。它不会要求输入密码。如果您收到如下错误:2018-02-12T08:57:39.826071Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket 文件不存在。 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 授予 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
sudo kill `sudo cat /var/run/mysqld/mysqld.pid`
mysql -u root -p
正在使用我的新密码
在服务器的初始启动时,假设服务器的数据目录为空,会发生以下情况:
服务器已初始化。
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!';
sudo grep 'temporary password' /var/log/mysqld.log
我得到 /var/log/mysqld.log: No such file or directory
sudo grep 'temporary password' /var/log/mysql/error.log
。 @Lahiru 解决方案对我有用。
shell> sudo grep 'password' /var/log/mysql/error.log
。为我工作,但我得到: root@localhost 是使用空密码创建的!请考虑关闭 --initialize-insecure 选项。 我的 mysql 版本是:Ver 8.0.13 for Linux on x86_64 (MySQL Community Server - GPL)
如果问题仍然存在,请尝试强制更改密码:
/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
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
也困扰着我的服务器。 'mysqld_safe' 也失败了,直到我在第 1 步之后执行了 'killall mysqld'。
--skip-grant-tables
与 --skip-networking
结合使用以防止远程客户端连接。 哦,而且,这个对我不起作用。这就是我来这里的原因:p
如果其他答案都不适合您,并且您收到此错误:
mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+ Exit 1 sudo mysqld_safe --skip-grant-tables
逐步按照以下命令进行操作,直到您重置密码:
# Stop your server first
sudo service mysql stop
# Make the MySQL service directory.
sudo mkdir /var/run/mysqld
# Give MySQL permission to work with the created directory
sudo chown mysql: /var/run/mysqld
# Start MySQL, without permission and network checking
sudo mysqld_safe --skip-grant-tables --skip-networking &
# Log in to your server without any password.
mysql -u root mysql
# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';
# If you omit (AND Host='localhost') section, it updates
# the root password regardless of its host
FLUSH PRIVILEGES;
EXIT;
# Kill the mysqld_safe process
sudo service mysql restart
# Now you can use your new password to log in to your server
mysql -u root -p
# Take note for remote access. You should create a remote
# user and then grant all privileges to that remote user
我遇到了这个非常烦人的问题,并发现了许多不起作用的答案。我遇到的最佳解决方案是完全卸载 MySQL 并重新安装。重新安装时,您设置了 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 后安装它,我认为 DigitalOcean 有一个很好的教程。查看我的要点。
How to install MySQL on Ubuntu (which works)
我正在使用 Ubuntu 16.04 (Xenial Xerus) 并安装了 MySQL 5.7。
我遇到过同样的问题
root 用户登录被拒绝。
我尝试了以下步骤:
dpkg --get-selections | grep mysql(获取 MySQL 的版本)。 dpkg-重新配置 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
然后它会向您询问密码。
我以 root 用户 ($SUDO) 安装 MySQL 并遇到了同样的问题
这是我修复它的方法:
sudo cat /etc/mysql/debian.cnf 这将显示详细信息: # 为 Debian 脚本自动生成。请勿触摸! [client] host = localhost user = debian-sys-maint 密码 = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run /mysqld/mysqld.sock 上面我们可以看到密码。但我们将在提示符中使用(GUx0RblkD3sPhHL5)。 `mysql -u debian-sys-maint -p Enter password:` 现在提供密码(GUx0RblkD3sPhHL5)。现在退出 MySQL 并再次登录:`mysql -u root -p Enter password:`
现在提供新密码。就这样。我们有一个新密码供进一步使用。
它对我有用。
请阅读官方文档:MySQL: How to Reset the Root Password
如果您可以访问终端:
MySQL 5.7.6 及更高版本:
mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
MySQL 5.7.5 及更早版本:
mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
> mysql -u {your_username}
对于那些当前答案不起作用的人可以试试这个(在 macOS 上测试):
mysql -h localhost -u root -p --protocol=TCP
在此之后,将要求您输入密码,您应该使用您的操作系统用户密码。然后当你进入 MySQL 时,你可以运行:
select Host, User from mysql.user;
你应该看到:
MySQL [(none)]> select Host, User from mysql.user;
+-----------+------------------+
| Host | User |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
从这里您可以更改配置并编辑密码或修改授权。
我在 Mac OS X 上使用 mysql-5.7.12-osx10.11-x86_64.dmg。
安装过程会自动为 root 用户设置一个临时密码。您应该保存密码。密码无法恢复。
请遵循以下说明:
转到 cd /usr/local/mysql/bin/ 输入临时密码(看起来像“tsO07JF1=>3”)你应该得到 mysql> 提示符。运行,SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');如果您想设置密码:“root”,那么命令将是,SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');运行 ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;运行 exit Run ./mysql -u root -p 输入您的密码。就我而言,我会输入“root”(不带引号)就是这样。
为方便起见,您应该将 "/usr/local/mysql/bin"
添加到 PATH 环境变量中。
现在,您可以在任何地方输入 ./mysql -u root -p
,然后输入密码,您将收到 mysql>
提示。
答案可能听起来很傻,但是在浪费了几个小时之后,这就是我让它工作的方式:
mysql -u root -p
我收到错误消息
错误 1045 (28000): 用户 'root'@'localhost' 的访问被拒绝(使用密码:是)
即使我输入了正确的密码(第一次安装 MySQL 时获得的临时密码)。
当密码提示闪烁时,我输入密码时我猜对了。
如果您将 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
2021 年。
回答 Ubuntu 20.04(Focal Fossa)(可能还有其他分布)。
经过几天的四处游荡......并且没有一个对我有用的答案,我做到了,它奏效了!
始终在 Bash shell 中:
sudo systemctl disable mysql
为了阻止守护程序在启动时启动。
sudo apt purge mysql-server
和
sudo apt purge mysql-community-server*
在那里,它警告您将删除配置文件......所以它正在工作!因为那些是惹麻烦的人!
sudo autoremove
删除所有遗留的包。
然后(也许它是可选的,但我做到了)重新启动。另外,我从 MySQL 官方网页下载了 mysql-server-8.0:
sudo apt install mysql-server
它工作的一个信号是,当您输入上述命令时,系统会要求您输入 root 密码。
最后:
mysql -u root -p
和你之前输入的密码。
如果问题仍然存在,请尝试强制更改密码。
停止 MySQL 服务器(在 Linux 上):
/etc/init.d/mysql stop
停止 MySQL 服务器(在 Mac OS X 上):
mysql.server stop
使用 --skip-grant-tables 启动 mysqld_safe 守护进程:
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 服务器(在 Linux 上):
/etc/init.d/mysql stop
停止 MySQL 服务器(在 Mac OS X 上):
mysql.server stop
启动MySQL服务器服务并测试以root登录:
mysql -u root -p
默认情况下,密码将为空,因此您必须通过以下步骤更改密码。
连接到 MySQL
root# mysql
Use mysql
mysql> update user set password=PASSWORD('root') where User='root';
最后,重新加载权限:
mysql> flush privileges;
mysql> quit
只需一行,它就解决了我的问题。
sudo dpkg-reconfigure mysql-server-5.5
在 Ubuntu 16.04 (Xenial Xerus) 和 MySQL 版本 5.7.13 中,我能够通过以下步骤解决问题:
按照 B.5.3.2.2 节中的说明重置根密码:Unix 和类 Unix 系统 MySQL 5.7 参考手册当我尝试 #sudo mysqld_safe --init-file=/home/me/mysql-init 时,它失败了。错误在 /var/log/mysql/error.log: 2016-08-10T11:41:20.421946Z 0 [注意] init_file '/home/me/mysql/mysql-init' 的执行开始。 2016-08-10T11:41:20.422070Z 0 [错误] /usr/sbin/mysqld: 找不到文件'/home/me/mysql/mysql-init' (Errcode: 13 - Permission denied) 2016-08-10T11: 41:20.422096Z 0 [错误] 中止
mysql-init 的文件权限不是问题。我们需要编辑 AppArmor 权限。
sudo 编辑 vi /etc/apparmor.d/usr.sbin.mysqld .... /var/log/mysql/ r, /var/log/mysql/** rw, # 允许用户初始化文件 /home/pranab/ mysql/* r, # 站点特定的添加和覆盖。有关详细信息,请参阅本地/自述文件。 #include
虽然最佳答案(带有 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 出现)。
我找到了Can't set root password MySQL Server,现在申请了
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';
这确实有效。
我面临的错误是:
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
并单击配置按钮。
https://i.stack.imgur.com/ZxR85.png
在我的情况下,端口在 3307 上运行,我使用了命令
mysql -u root -p -P 3307 -h 127.0.0.1
我有一个类似的问题:
错误 1045 (28000): 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)
但就我而言,原因真的很愚蠢。我从 Word 文档中复制了命令,问题是连字符没有 ASCII 0x2D 代码,而是 Unicode 0xE2 0x80 0x93 UTF-8 序列(代码点 U+2013 EN DASH)。
错误的方法:
mysql -u root –pxxxx
正确的路:
mysql -u root -pxxxx
两者看起来相同,但并不相同(尝试一下,复制并粘贴替换您的密码)。
面对此类错误,建议尝试键入命令而不是复制和粘贴。
\x{2013}
(至少在 Notepad++ 和 Geany 中有效)。它还可用于搜索/替换 ZERO WIDTH SPACE 等不可见字符(搜索 \x{200B}
)。
因为您的错误消息显示“密码:是”,这意味着您使用了错误的密码。这也发生在我身上。幸运的是,我记住了正确的密码,并且能够使数据库连接正常工作。
在最近的 MySQL 版本中,mysql.user
表中没有任何 password
。
所以你需要执行ALTER USER
。将这一行命令放入文件中。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
并将其作为 init 文件执行(作为 root 或 mysql 用户):
mysqld_safe --init-file=/home/me/mysql-init &
需要停止 MySQL 服务器才能启动 mysqld_safe
。
此外,加载此初始化文件的 AppArmor 权限可能存在问题。在 AppArmor and MySQL 中了解更多信息。
如果您尚未设置密码,请运行 mysql -uroot
。这个对我有用。
在 Mac 上,如果您在使用安装时提供的第一个密码登录时遇到问题,也许您可以简单地杀死 MySQL 进程然后尝试。
所以:
运行以下命令查找 MySQL 的 PID:ps -aef | grep mysql | grep -v grep 杀死进程:kill -15 [进程ID]
然后您可以使用以下命令使用初始密码登录:
mysql -uroot -p
它要求您输入密码。只需输入初始密码。
不定期副业成功案例分享
-p
标志指定密码,因此在您更改根密码后,您会像mysql -u root -p[newpassword]
一样。< [filename]
正在使用 std 输入在通过您提供的用户凭证给定的路径执行 SQL 文件。mysqladmin -u root password abc1234
的指示尝试了,但我得到了mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'
。太感谢了!