centos7 上安装mysql5.7后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using pas

本文介绍了解决MySQL安装后无法登录及权限配置错误的方法,包括重置密码、配置无密码登录、修改用户主机名等步骤。

安装完mysql后会有个临时密码去日志查看,但是查看登录修改密后还是不行

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:yes)

于是

1,停止mysql服务

systemctl stop mysqld.service

2,修改配置文件无密码登录

vi /etc/my.cnf

在最尾部加上

skip-grant-tables
保存

3,启动mysql

systemctl start mysqld.service

4,登录musql

mysql -u root
此处注意不要加-p


5,修改密码,mysql5.7用此语法

use mysql ;

 update mysql.user set authentication_string=password('123456') where user='root' ;

6,回到第二步骤去掉加上的

skip-grant-tables

保存 重启mysql就ok了


#########################################################################

其实默认安装完了mysql后或在日志中生成一个默认的密码 /var/log/mysqld.log 中

拿到默认密码后登录mysql  进行密码重新设置

set password=password('you password');

如果密码级别与默认的级别要求不符时候会报

Your password does not satisfy the current policy requirements
此时需要修改级别与最小的默认密码位数

set global validate_password_policy=0;
set global validate_password_length=4;
然后在进行设置密码就好了


###################

远程连接时1130错误

mysql;use mysql;  
mysql;select 'host' from user where user='root';  
mysql;update user set host = '%' where user ='root';  
mysql;flush privileges;  
mysql;select 'host'   from user where user='root';


### 问题分析 出现 `ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)` 错误,通常表示尝试使用 `root` 用户登录 MySQL 时提供的密码不正确,或者存在身份验证机制的配置问题。此问题在本地开发环境中较为常见,尤其在密码遗忘或配置更改后容易发生[^1]。 ### 解决方案 #### 方法一:跳过权限验证并重置密码 该方法适用于忘记 `root` 用户密码的情况。通过跳过 MySQL 的权限验证机制,可以直接登录并修改密码。 1. 停止 MySQL 服务: ```bash sudo systemctl stop mysqld ``` 2. 启动 MySQL 并跳过权限验证: ```bash sudo mysqld_safe --skip-grant-tables & ``` 3. 登录 MySQL,无需密码: ```bash mysql -u root ``` 4.MySQL 提示符下执行以下命令重置密码: ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` 如果 MySQL 版本较低,使用以下命令: ```sql UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost'; FLUSH PRIVILEGES; ``` 5. 退出 MySQL 并重启服务: ```bash exit; sudo systemctl restart mysqld ``` 6. 使用新密码登录 MySQL: ```bash mysql -u root -p ``` #### 方法二:使用 MySQL 安全模式重置密码 部分系统支持通过 `mysql_secure_installation` 工具进行密码重置和安全配置: 1. 运行安全配置工具: ```bash sudo mysql_secure_installation ``` 2. 按照提示操作,重新设置 `root` 用户密码。 #### 方法三:检查用户权限和配置 如果密码正确但仍然无法登录,可能是由于权限配置问题导致。可以执行以下命令检查 `root` 用户的权限: ```sql SHOW GRANTS FOR 'root'@'localhost'; ``` 若权限配置异常,可重新授予所有权限: ```sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` #### 方法四:检查连接方式和 host 配置 MySQL 的用户权限表中,`Host` 字段决定了用户可以从哪些主机连接数据库。确保 `root` 用户允许从 `localhost` 登录: ```sql SELECT User, Host FROM mysql.user WHERE User = 'root'; ``` 如果 `Host` 不包含 `localhost`,可添加相应权限: ```sql CREATE USER 'root'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` --- ### 验证与调试 - **查看 MySQL 错误日志**:日志文件通常位于 `/var/log/mysqld.log`,可用于排查连接失败的具体原因。 - **测试连接**:使用 `telnet` 或 `nc` 命令测试 MySQL 端口是否开放: ```bash telnet localhost 3306 ``` --- ### 示例代码 ```bash # 停止 MySQL 服务 sudo systemctl stop mysqld # 启动 MySQL 并跳过权限验证 sudo mysqld_safe --skip-grant-tables & # 登录 MySQL mysql -u root # 在 MySQL 提示符下执行以下命令 FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; # 退出 MySQL exit; # 重启 MySQL 服务 sudo systemctl restart mysqld # 使用新密码登录 mysql -u root -p ``` --- ### 权限管理相关操作 - **查看用户权限**: ```sql SHOW GRANTS FOR 'username'@'host'; ``` - **删除用户**: ```sql DROP USER 'username'@'host'; ``` - **授予特定数据库权限**: ```sql GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host'; FLUSH PRIVILEGES; ``` - **限制用户资源使用**: ```sql ALTER USER 'test'@'%' IDENTIFIED BY 'new_password' WITH MAX_QUERIES_PER_HOUR 100 MAX_UPDATES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 5 MAX_USER_CONNECTIONS 10; ``` ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

soulbboy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值