新公司使用的是宝塔来部署项目,war包。在部署运行时遇到了SQLException: Access denied for user "xxx@xxxxx" (using password:yes)
重装mysql无果之后。就只能慢慢解决,分享下我的解决过程。
# 一. 错误原因
正常来讲,使用navicat等连接工具 访问/创建 数据库时,就会遇到这种错误。错误原因无外乎这两种。
## 1. 访问的ip,账号,密码输入错误
正常来讲项目遇到这种错误,检查下ip填写是否正确,账号密码有没有带空格,就能解决这种问题。
## 2. 账户权限不足
如果上述方法尝试均未能解决,那就要进到服务器看看账户权限了。
### 1)查看mysql的所有用户
使用 mysql -u root -p 命令,再输入密码登录Mysql。
SELECT DISTINCT CONCAT("User: """,user,"""@""",host,""";") AS query FROM mysql.user; 使用sql查询user表中的用户信息
如图,查看自己的账号的权限。%是全部权限。如果是没有权限可以赋值给这个用户。
PS: 我遇到的问题是,这个mysql 的%权限竟然不包括 localhost 本地访问权限。我要在安装这个mysql的本地去访问它,就必须单独对其单独赋值。
原因暂不明,猜测是版本问题。重装过依旧存在这种情况。
### 2)查看权限
show grants for "用户名"@"%"; 查看用户权限 ,看看用户是否有操作权限。
### 3)赋予权限
grant all privileges on main_db.* to 用户名@"%" identified by "表名"; 如果没有,则赋予其相应数据库的操作权限 。
flush privileges; 赋予完权限后,别忘记刷新。然后再次查看这个用户的权限,就知道有没有执行成功了。
PS:友情提示每一个 命令/sql 都要注意带分号,
最普遍的还是,数据库地址,账号密码不正确。大家多多细心。