目录
无法连接远程访问: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
systemctl is-enabled mysql
# 如果不是enable请使用 systemctl命令开启
sudo systemctl enable mysql
切换为root用户
重启服务、配置文件都需要root,建议使用root用户(exit命令退出)
解决sock连接问题
(直接通过sudo mysql可以连接请忽略该步骤,该步骤为解决报错ERROR 2002: Can‘t connect to local MySQL 的 mysql.sock继)
查找sock文件
find / -name 'mysql*.sock'
# 注意有些教程说找'mysql.sock'是不正确的,因为发现搜索结果是'mysqld.sock'
# 位置在'/run/mysqld/mysqld.sock',大家可以确认是否存在该文件,存在的话直接使用
编辑mysql配置文件
vim /etc/my.cnf
保存后重启服务
systemctl restart mysqld
本地连接成功!(到这里问题已经解决了)
(罕见错误)连接失败:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)
重启服务(不管有没有出错):
systemctl restart mysql
发现本地无“/run/mysqld/mysqld.sock”
重新运行find命令(暂时不清楚原理,即可重新出现)
修改本地连接密码
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
exit;
成功本地连接(允许无root)
mysql -uroot -h 127.0.0.1 -p
# “-u” 指定用户名(这里是 “root”)
# “-h” 指定主机地址(这里是 “127.0.0.1” 表示本地主机)
# “-p” 表示提示输入密码
# 退出mysql命令行
exit;
修改配置使其能被局域网访问
预操作
通过“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‘的问题