SQLSTATE [HY000] [1698]

时间:2018-06-27 07:08:46

标签: php mysql laravel-5 ubuntu-16.04

如何克服此错误?

  

错误: SQLSTATE [HY000] [1698]用户'root'@'localhost'的访问被拒绝(SQL:从users中选择count(*)作为聚合   其中email = email@gmail.com

我正在使用Ubuntu

请帮助

4 个答案:

答案 0 :(得分:1)

首先以root用户身份登录:

$ sudo mysql -u root

然后创建或更改非root用户(如果需要,请使用“ 127.0.0.1”而不是“ localhost”):

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'adminspassword';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';
FLUSH PRIVILEGES;

退出并重新启动:

exit
$sudo service mysql restart
$sudo service apache2 restart

并编辑.env文件:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3630
DB_DATABASE=yourdbname
DB_USERNAME=admin
DB_PASSWORD=adminspassword

答案 1 :(得分:1)

我知道已经晚了,但是正在寻找答案,我什么也找不到,最后我得到了这个答案。

$sudo mysql -u root
[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
[mysql] \q

现在,您应该能够以root用户身份登录。 感谢@Matematikisto在this线程中

答案 2 :(得分:0)

MySQL将使“ localhost”和“ 127.0.0.1”之间有所不同。

可能不允许使用'root'@'localhost',因为用户表中有一个条目仅允许127.0.0.1的root登录。

这也可以解释为什么服务器上的某些应用程序可以连接到数据库,而有些则不能,因为连接数据库的方式不同。而且您当前不允许通过“ localhost”。

答案 3 :(得分:0)

我在 MySQL 8、Ubuntu 20 中遇到过这个问题。默认情况下,该策略不授予“GRANT”权限,包括 root,但即使在操作后获取它们,应用程序也只能在授予权限后才能获得访问权限mysql_native_password 帐户的权限。也许它会帮助某人:

UPDATE mysql.user SET authentication_string=CONCAT('*', UPPER(SHA1(UNHEX(SHA1('password'))))), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

更改密码及其格式的完整步骤序列在这里: MySQL: How to reset or change the MySQL root password?

相关问题