目录
无法连接远程访问:ERROR 2003(111)、1045错误
起因
sock连接报错:(需要root):
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
tcp连接不知道root账户密码:
想到可以不使用sock连接,直接使用tcp连接,但又不知道初始密码,也不是空密码
网络上的方法过于繁杂、不起效果:
无法连接远程访问:ERROR 2003(111)、1045错误
ERROR 2003 (HY000): Can't connect to MySQL server on '10.111.11.111:3306' (111)
ERROR 1045 (28000): Access denied for user 'root'@'10.111.11.111' (using password: YES)
推荐更改软件源,本次安装也是基于该软件源
打开“软件与更新”
【下载自】-》【其它】-》选择阿里源
apt update
apt install mysql-server
mysql --version
切换为root用户
重启服务、配置文件都需要root,建议使用root用户(exit命令退出)
解决sock连接问题
查找sock文件
find / -name '*.sock'
# 注意有些教程说找'mysql.sock'是不正确的,因为发现搜索结果是'mysqld.sock'
# 位置在'/run/mysqld/mysqld.sock',大家可以确认是否存在该文件,存在的话直接使用
编辑mysql配置文件
vim /etc/my.cnf
保存后重启服务
systemctl restart mysql
本地连接成功!
修改本地连接密码
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
exit;
成功本地连接(无root)
修改配置使其能被局域网访问
预操作
通过“ifconfig”查看本机ip地址
内网地址为:
- 10.0.0.0 到 10.255.255.255 (10.0.0.0/8)
- 172.16.0.0 到 172.31.255.255 (172.16.0.0/12)
- 192.168.0.0 到 192.168.255.255 (192.168.0.0/16)
开放数据库端口(默认)“3306”(root)
修改配置文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
重启服务
systemctl restart mysql
查看是否允许通过tcp连接数据库(默认,可不操作该步骤)
进入mysql命令行
SHOW VARIABLES LIKE 'skip_networking';
quit
配置正确
新建专属用户允许访问某个数据库(推荐)
CREATE USER 'new_user'@'%' IDENTIFIED BY 'new_password';
GRANT ALL PRIVILEGES ON healthy_platform.* TO 'new_user'@'%';
FLUSH PRIVILEGES;
连接成功
root开启远程访问(不推荐,一旦泄漏影响整个数据库)
有bb应该发现了,当时配置root的时候使用的可访问地址设置为了“localhost”
现在只需要把它改成'%'就可以了
use mysql;
UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;
flush privileges;
连接成功!
参考文章:
MySQL 连接错误 111:无法连接到 MySQL 服务器
Ubuntu MySQL解决ERROR 1698 (28000): Access denied for user ‘root‘@‘localhost‘的问题