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

浙公网安备 33010602011771号