我是一名电气工程师,主要负责电力系统而不是编程。最近,我一直在按照手册在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)
我该如何解决并继续?
答案 0 :(得分:123)
注意:对于 MySQL 5.7 + ,请参阅answer from @Lahiru此问题。这包含更多当前信息。
对于MySQL&lt; 5.7:
默认root密码为空(即空字符串)而不是root
。所以你可以登录:
mysql -u root
显然,您应该在安装后更改root密码
mysqladmin -u root password [newpassword]
在大多数情况下,您还应该在广泛使用数据库之前设置个人用户帐户。
答案 1 :(得分:111)
我能够通过执行此语句来解决这个问题
sudo dpkg-reconfigure mysql-server-5.5
这将更改root密码。
答案 2 :(得分:62)
您必须重置密码! mac osx(测试和工作)和ubuntu的步骤
使用
停止MySQLsudo 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
您的新密码是&#39;密码&#39;。
答案 3 :(得分:30)
如果问题仍然存在,请尝试强制更改传递
/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
答案 4 :(得分:22)
在服务器初次启动时,如果服务器的数据目录为空,则会发生以下情况:
要显示它,请使用以下命令:
shell> sudo grep 'temporary password' /var/log/mysqld.log
使用生成的临时密码登录并尽快更改root密码,并为超级用户帐户设置自定义密码:
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!';
答案 5 :(得分:20)
我知道这是一个古老的问题,但我觉得这可能对某人有所帮助。我最近遇到了同样的问题但在我的情况下,我记得我的密码很好,但它一直给我同样的错误。我尝试了很多解决方案,但仍然没有帮助,然后我尝试了这个
mysql -u root -p
之后它会要求您输入这样的密码
Enter password:
然后我输入我使用的密码。那就是
答案 6 :(得分:19)
当您的密码丢失时会发生。
忘记密码后更改密码的步骤:
停止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目录'/ var / run / mysqld'for UNIX
套接字文件不存在。
mysql -u root
ERROR 2002(HY000):无法通过套接字连接到本地MySQL服务器
'/var/run/mysqld/mysqld.sock'(2)
[1] +退出1
创建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
答案 7 :(得分:11)
使用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;
退出root并从上面给出的登录。
mysql -u <your_new_username> -p
由于某些原因仍然只是键入mysql不起作用。在所有。我建议养成使用mysql -u <name> -p
的习惯。
答案 8 :(得分:7)
我遇到了这个非常烦人的问题,发现很多答案都没有用。我遇到的最佳解决方案是完全卸载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,我认为数字海洋有一个很好的教程。查看我的要点。
https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096
答案 9 :(得分:5)
我以 root用户(
$SUDO
)的身份安装了MySQL,并遇到了同样的问题
这是我的解决方法-
$ sudo cat /etc/mysql/debian.cnf
这将显示为-
# 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
在上方,我们将看到密码,我们将在提示中使用(GUx0RblkD3sPhHL5)
-
mysql -u debian-sys-maint -p
Enter password:
现在提供密码( GUx0RblkD3sPhHL5 )。
现在从MySQL exit
并重新登录为-
mysql -u root -p
Enter password:
现在提供新密码。就是这样,我们有了新的密码以备将来使用。
它对我有用,希望也能帮到您!
答案 10 :(得分:5)
请阅读官方文档: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');
答案 11 :(得分:3)
答案可能听起来很愚蠢,但在浪费了几个小时之后,这就是我开始工作的方式
mysql -u root -p
我收到了错误消息
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
即使我输入了正确的密码(第一次安装mysql时获得的临时密码)
当我在密码提示符闪烁时输入密码时,我说对了
答案 12 :(得分:3)
我在Mac OSX中使用mysql-5.7.12-osx10.11-x86_64.dmg
安装过程会自动为root用户设置临时密码。你应该保存密码。密码无法恢复。
按照说明
cd /usr/local/mysql/bin/
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');
如果您想设置密码:&#34; root&#34;那么命令就是SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
exit
./mysql -u root -p
为方便起见,您应将"/usr/local/mysql/bin"
添加到路径
现在,您可以从任何地方输入./mysql -u root -p
,然后输入密码,您将获得mysql&gt;提示。
希望它有所帮助。
答案 13 :(得分:2)
如果问题仍然存在,请尝试强制更改传递
停止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
答案 14 :(得分:1)
在Ubuntu 16.04(MySQL版本5.7.13)中,我能够通过以下步骤解决问题:
按照B.5.3.2.2重置root密码:Unix和Unix类系统中的说明进行操作 MySQL 5.7 reference manual
当我尝试#sudo mysqld_safe时--init-file = / home / me / mysql-init&amp;它失败了。错误发生在/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'(错误代码:13 - 权限被拒绝) 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,
# Allow user init file
/home/pranab/mysql/* r,
# Site-specific additions and overrides. See local/README for details.
#include <local/usr.sbin.mysqld>
}
#sudo /etc/init.d/apparmor reload
再次启动mysqld_safe尝试上面的步骤2。检查/var/log/mysql/error.log确保没有错误并且mysqld已成功启动
运行#mysql -u root -p
输入密码:
输入您在mysql-init中指定的密码。您现在应该能够以root用户身份登录。
#sudo mysqladmin -u root -p shutdown
#sudo systemctl start mysql启动mysqld正常方式
答案 15 :(得分:1)
只有一行,它解决了我的问题。
sudo dpkg-reconfigure mysql-server-5.5
答案 16 :(得分:1)
对于那些当前答案不起作用的人,可以尝试以下操作:(在Mac OS上测试)
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 |
+-----------+------------------+
,然后您可以在此处更改配置,编辑密码或修改授权。
答案 17 :(得分:1)
如果您输入其他答案中所述的命令,但仍然会出现此错误,这将起作用:
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 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 -uroot 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 pass regardless of its host
FLUSH PRIVILEGES;
EXIT;
#Now you can use your new password to login to your Server
mysql -uroot -p
答案 18 :(得分:0)
答案 19 :(得分:0)
我遇到的错误是
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
端口正在运行是一个问题。
默认情况下,mysql在port 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
答案 20 :(得分:0)
尽管最高答案(w / mysqladmin)在Mac 10.15上有效,但在ubuntu上却无效。然后尝试了许多其他选项,包括mysql的安全启动,没有一个起作用。因此添加了新的响应。
至少对于我得到5.7.28-0ubuntu0.18.04.4
的版本缺少IDENTIFIED WITH mysql_native_password
。 5.7.28是当前LTS的默认设置,因此应该是大多数新系统的默认设置(直到20.04 LTS推出)。
发现:https://www.digitalocean.com/community/questions/can-t-set-root-password-mysql-server,现在已应用
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';
有效。
答案 21 :(得分:0)
如果您将MySQL作为Docker映像的一部分(例如在端口6606上)和Ubuntu安装(在端口3306上),则指定该端口是不够的:
mysql -u root -p -P 6606
将抛出:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
默认情况下尝试连接到本地主机时,指定您的本地IP可解决此问题:
mysql -u root -p -P 6606 -h 127.0.0.1
答案 22 :(得分:0)
我也遇到了同样的问题,我当时所做的是
1)打开您的cmd
2)导航到C:\ Program Files \ MySQL \ MySQL Server 8.0 \ bin> (根据您安装的服务器,MySQL Server 8.0可能有所不同)
3)然后将以下命令mysql -u root -p
4)我将提示您输入密码...只需按Enter键,因为有时您在安装时输入的密码被更改为空白。
现在您可以轻松访问数据库
此解决方案在Windows平台上对我有效
答案 23 :(得分:0)
2021 年。
回答 Ubuntu 20.04(也可能是其他发行版)
经过几天的徘徊......并且这些答案都不适合我,我做到了,并且奏效了!
始终在 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
还有你之前输入的密码。
答案 24 :(得分:0)
我在使用Ubuntu 18.04 LTS和Mysql Server版本5.7.27-0ubuntu0.18.04.1(Ubuntu)时遇到了这个问题。
我的解决方案是(使用sudo -i
作为 root 运行)
mysql <<-EOSQL
use mysql;
update user set plugin="mysql_native_password" where User='root';
FLUSH PRIVILEGES ;
EOSQL
mysqladmin -u root password new_pw
答案 25 :(得分:0)
只需输入终端
mysql -u root -p。 比它会询问密码
答案 26 :(得分:0)
我尝试使用@Lahiru的正确答案,但不适用于macOS Mojave上的MySQL服务器版本8.0.16(社区)。
按照上面Sameer Choudhary的说明进行了一些调整之后,我能够更改root密码并启用从本地主机的root访问。
更新:如果要使用Homebrew在Mac OS上安装,则不需要所有这些:“ brew install mysql”
答案 27 :(得分:0)
我有一个类似的问题:
错误1045(28000):用户'root'@'localhost'的访问被拒绝(使用 密码:否)
但就我而言,原因确实很愚蠢。 我从Word文档中复制了命令,问题是连字符没有ASCII 2D代码,但有Unicode E28093。
错误的方式:
mysql -u root –pxxxx
正确的方法:
mysql -u root -pxxxx
两者看起来相同但不相同(尝试一下,复制并粘贴替换您的密码)。
面对这种类型的错误,建议您尝试键入命令而不是复制和粘贴。
答案 28 :(得分:0)
在Mac上,如果您在使用安装时输入的第一个密码登录时遇到问题,也许您可以简单地终止mysql进程,然后尝试。
所以: 1-运行以下命令找到mysql的PID:
ps -aef | grep mysql | grep -v grep
2-终止进程:
kill -15 [process id]
然后您可以使用以下命令以初始密码登录:
mysql -uroot -p
要求您输入密码。只需输入初始密码即可。
答案 29 :(得分:0)
如果您尚未设置密码,请运行mysql -uroot
,它对我有用。
答案 30 :(得分:0)
默认密码为空,因此您必须通过执行以下步骤来更改密码。
连接到mysql
root#mysql
使用mysql
的MySQL&GT;更新用户设置密码=密码(&#39; root&#39;)其中User =&#39; root&#39 ;; 最后,重新加载权限:
的MySQL&GT;冲洗特权; MySQL的&GT;退出
答案 31 :(得分:0)
在最近的MySQL版本中,password
表中没有mysql.user
。
所以你需要执行ALTER USER
。将此一行命令放入文件中。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
并将其作为初始文件(以root用户或mysql用户身份)执行
mysqld_safe --init-file=/home/me/mysql-init &
需要停止MySQL服务器才能启动mysqld_safe
。
此外,apparmor权限可能存在加载此init文件的问题。在这里阅读更多 https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql
答案 32 :(得分:-1)
就我而言,我试图将shell命令传递给容器。在这种情况下,只会解释第一个单词。确保您没有运行:
mysql
相对于:
mysql -uroot -ppassword schemaname
也许尝试引用:
'mysql -uroot -ppassword schemaname'