今天我在用下面的VS插件SQLTools链接mysql的时候,遇到了无法链接的问题:
MYSQL版本我用的是8.0,经过下面的配置会报如下错误:
配置信息如下:
报错信息如下:ERROR (ls): Connecting error: {"code":-1,"data":{"driver":"MySQL","driverOptions":{"mysqlOptions":{"authProtocol":"default"}}},"name":"Error"}
解决方法:
先确保下载了mysql:
Linux 安装Mysql 详细教程(图文教程)-CSDN博客
如果确认mysql已经下载完成,那么大概率该问题是因为打开了skip-networking。开启该选项可以彻底关闭 MySQL 的 TCP/IP 连接方式,如果 WEB 服务器是以远程连接的方式访问 MySQL 数据库服务器则不要开启该选项!否则将无法正常连接! 如果所有的进程都是在同一台服务器连接到本地的 mysqld, 这样设置将是增强安全的方法。
我们可以先进入到mysql中来查看skip-networking是否是ON状态。
show variables like 'skip_networking';
show variables like 'port';
如果是ON那么这就是为什么vs无法链接的原因,我们需要关闭skip_networking。
我们可以用show variables like 'port';查看端口信息,目前大概率是0。
知道了问题出在哪后我们就可以来修改my.cnf配置文件,由于我使用的是mysql8.0该版本在/etc/目录下是没有自动生成的my.cnf配置文件,该配置文件在/etc/mysql目录下,所以我们需要进入/etc/mysql运行下面语句
sudo vim my.conf
将下面内容复制到你的my.conf文件中
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
skip_networking=off
这里需要注意请确保你的/etc目录下没有你自己创建的my.conf,否则你要把内容加到该文件中,因为。MySQL读取各个my.cnf配置文件的先后顺序是:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~/.my.cnf
这时我们再运行如下sql语句:
show variables like 'skip_networking';
show variables like 'port';
可以看到目前已经设置成功了。
不过很有可能你再进行连接的时候会出现如下错误:
ERROR: Error opening connection ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client..
这时可以参考该链接:
最后我们就惊奇的发现可以链接上去了!
本文到此就结束了!希望本篇文章对大家带来帮助!