localhost/IP 地址连接不上

报错代码:
➜  ~ mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
报错原因:
① 概述:用户root访问localhost/IP被拒绝访问

② 一般是数据库的用户名或者密码跟服务器上mysql设置的不一致,导致匹配失败
问题解决方案:
# 注意解决步骤:

① 查看mysql配置文件

② 查看 mysql 配置文件加载顺序

③ 修改配置文件跳过权限验证(skip-grant-tables)

④ 登录mysql客户端修改密码
注意 mac 版本方案:

① 查看 mysql 运行情况,看看在哪里

➜  ~ ps aux | grep mysql   -- 查看mysql的运行进程 可以看到启动地址
amu       15262   0.0  4.9  4899000 407680   ??  S     1:14下午   0:01.18 /usr/local/opt/mysql/bin/mysqld
--basedir=/usr/local/opt/mysql
--datadir=/usr/local/var/mysql
--plugin-dir=/usr/local/opt/mysql/lib/plugin
--log-error=liyangyang.local.err
--pid-file=liyangyang.local.pid
--socket=/tmp/mysql.sock

② 查看 mysql 配置文件加载情况:

➜  ~ /usr/local/opt/mysql/bin/mysqld --verbose --help | grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

# 概述:
① 服务器首先读取的是 /etc/my.cnf文件

② 如果前一个文件不存在则继续读/etc/mysql/my.cnf文件,依此类推往下寻找,一直到最后一个~/.my.cnf文件

③ 如果以上所有文件都不存在;则说明安装mysql之后未进行配置文件;可以自己编辑一份名为my.cnf;修改文件拥有者和所属组且赋予可执行权限即可

       ① mkdir /usr/local/mysql/etc

       ② vim /usr/local/mysql/etc/my.cnf  -- 内容可以复制一份本地的配置文件即可

       ③ chown -R root:root /usr/local/mysql/etc/

       ④ chmod 755 /usr/local/mysql/etc/my.cnf

③ 查看 mysql 读取配置文件方法:

## 查看是否使用了指定目录的my.cnf
➜  ~ ps aux | grep mysql | grep 'my.cnf'

## 查看mysql默认读取my.cnf的目录
➜  ~ mysql --help | grep 'my.cnf'
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

这些就是mysql默认会搜寻my.cnf的目录,顺序排前的优先;等同于上面搜索语句

④ 免密码登录并修改密码

### mysql 5.8版本之前的修改方法:

① 在mysql配置文件中,[mysqld]下添加一行,使其登录时跳过权限检查
[mysqld]
skip_grant_tables

② 重启mysql服务;登录mysql -uroot -p

### mysql5.8版本之后修改方法:

    ① 执行目录下执行,例如我本地运行地址:
    /usr/local/opt/mysql/bin/mysqld  -console --skip-grant-tables --shared-memory

    ② 新开启一个窗口:mysqld -uroot -p 直接回车(大家可以升级版本测试下)

### 以上操作完毕后 进度mysql终端,修改密码:

set password for root@localhost = '新密码';
或者
update user set authentication_string='新密码' where user='root';
或者
alter user 'root'@'localhost' identified with mysql_native_password by '新密码';

### 注意:刷新mysql相关权限
flush privileges;

### 最终流程:
mysql> update user set authentication_string='root' where user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> set password for root@localhost = 'root';
Query OK, 0 rows affected (0.02 sec)

mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'root';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye

此时再登录时我们的密码已经更新为root
posted @ 2025-08-13 12:27  寻码疹  阅读(20)  评论(0)    收藏  举报