错误1045(28000):拒绝访问用户'root'@'localhost'(使用密码:是)
我是一个电力工程,主要是用电力系统而不是编程。 最近,我一直在遵循手册在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)
我该如何解决并继续?
默认的根密码是空的(即空string),而不是root
。 所以你可以login为:
mysql -u root
安装后你应该明显地改变你的root密码
mysqladmin -u root password [newpassword]
在大多数情况下,您还应该在广泛使用数据库之前设置个人用户帐户。
注意:对于MySQL 5.7+,请看@Lahiru对这个问题的回答。 这包含更多的最新信息。
我能够通过执行这个语句来解决这个问题
sudo dpkg-reconfigure mysql-server-5.5
这将改变根密码。
你必须重置密码! mac osx(testing和工作)和Ubuntu的步骤
停止使用MySQL
sudo service mysql stop
要么
$ sudo /usr/local/mysql/support-files/mysql.server stop
以安全模式启动它:
$ sudo mysqld_safe --skip-grant-tables
(上面的行是整个命令)
这将是一个持续的命令,直到这个过程完成,打开另一个shell /terminal窗口,login没有密码:
$ mysql -u root mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
启动MySQL使用:
sudo service mysql start
要么
sudo /usr/local/mysql/support-files/mysql.server start
你的新密码是“密码”。
如果问题仍然存在,请尝试强制更改通行证
/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服务器并testing它:
mysql -u root -p
我使用Ubuntu-16.04:安装了mysql – 5.7。 我有同样的问题:login被拒绝的根用户。
试过以下步骤:
1. dpkg --get-selections | grep mysql
dpkg --get-selections | grep mysql
(获取mysql的版本)。
2. dpkg-reconfigure mysql-server-5.7
3. mysql -u root -p
没有-p,不会提示你要求密码。 一旦进入,您可以通过以下步骤创build一个使用密码的用户:
CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';
GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;
从根目录退出并从上面给出的login。
mysql -u <your_new_username> -p
由于某些原因,仍然只是inputMySQL不起作用。 全部。 我build议使它成为使用mysql -u -p的习惯 。
在服务器的初始启动时,会发生下列情况,因为服务器的数据目录是空的:
- 服务器已初始化。
- 在数据目录中生成SSL证书和密钥文件。
- validate_password插件已安装并启用。
- 超级用户帐户“root”@“localhost”被创build。 超级用户的密码被设置并存储在错误日志文件中。
要显示它,请使用以下命令:
shell> sudo grep 'temporary password' /var/log/mysqld.log
通过使用生成的临时密码login并尽快更改root密码,并为超级用户帐户设置自定义密码:
shell> mysql -uroot -p mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!';
请阅读官方文档: Mysql:如何重置根密码
如果您有权访问terminal:
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');
我遇到了这个非常恼人的问题,发现许多没有奏效的答案。 我遇到的最好的解决scheme是完全卸载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
只是一条线,它解决了我的问题。
sudo dpkg-reconfigure mysql-server-5.5
我在Mac OSX中使用mysql-5.7.12-osx10.11-x86_64.dmg
安装过程会自动为root用户设置一个临时密码。 你应该保存密码。 密码无法恢复。
按照说明
- 转到
cd /usr/local/mysql/bin/
- input临时密码(看起来像“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
- 运行
./mysql -u root -p
- input您的密码。 在我的情况下,我会键入,“根”(不引用)
- 就这样。
为了方便起见,你应该在你的PATH中添加"/usr/local/mysql/bin"
现在你可以在任何地方input./mysql -u root -p
然后input密码,你将得到mysql>提示符。
希望它有帮助。
默认密码是空的,所以你必须通过以下步骤来更改密码。
连接到MySQL
根#mysql
使用mysql
mysql> update user set password = PASSWORD('root')其中User ='root'; 最后重新加载权限:
mysql>刷新权限; mysql>退出
在最近的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权限可能会加载此init文件的问题。 在这里阅读更多https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql
在Ubuntu 16.04(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'的执行。 / usr / sbin / mysqld:找不到文件'/ home / me / mysql / mysql-init'(Errcode:13 – Permission denied)2016-08-10T11:41:20.422070Z 0 [错误] 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重新加载
-
再次启动mysqld_safe,尝试上面的第2步。 检查/var/log/mysql/error.log确保没有错误,mysqld已成功启动
-
运行#mysql -u root -p
input密码:
input您在mysql-init中指定的密码。 您现在应该能够以root身份login。
-
通过#sudoclosuresmysqld_safe mysqladmin -u root -pclosures
-
以#sudo systemctl启动mysql启动mysqld正常的方式
如果问题仍然存在,请尝试强制更改通行证
停止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服务器服务并testing以root身份login:
mysql -u root -p