IDEA内置Database插件连接Deepin上的MySql

配置server

sudo apt-get install -y mysql-server mysql-client 安装

sudo mysql -uroot -p 初始密码直接空格

进入Mysql命令行

use mysql;

update user set authentication_string='新密码' where user='root'; 注意修改密码要加单引号

进行一些基本的sql操作

么的问题

IDEA驱动设置

在IDEA中使用时 mysql-connector-java-8.0.15.jar 下载超时

国内下载链接..

在项目中导入该jar依赖包

在database插件中配置驱动器

找到IDEA默认的存放驱动器的路径,将jar放在该目录下

/home/wliana/.IntelliJIdea2019.3/config/jdbc-drivers

还得下一个5.1.47版本,放在Mysql for 5.1

重新测试连接

Access denied for user ‘root‘@’localhost’

连接问题排查

可能访问权限没有开放,回到mysql 进行授权

grant all privileges on *.* to 'root' @'%' identified by 'root';

flush privileges;

然而并不是这个原因,经过好长时间多角度试探,我发觉了一个盲点…应该是密码编码转换的问题

select user, plugin from mysql.user;

root的plugin被修改成了unix_socket,用密码登陆的plugin应该是mysql_native_password

update mysql.user set plugin="mysql_native_password" where user="root";

但是这样一来我用原来的密码登不上了….应该同步更新一下密码的

/etc/init.d/mysql stop 停止服务

企图跳过授权表…:mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2 “No such file or directory”)

尝试重启:会重新生产mysqld.sock文件

成功登进去并重置了密码,但还是有同样的问题….算了,该睡觉了


感觉问题出在Linux上,因为之前的plugin是unix_socket

在Debian中软件包mysql已经替换成了mariadb了。在安装后/etc/mysql/mariadb.cnf预设了root用户使用socket的连接方式,所以不输入密码也可在命令行直接使用mysql命令登录。

难道说IDEA用@其实是一种远程连接的形式?

修改/etc/mysql/mariadb.conf.d/50-server.cnf中的bind-address为允许的网络地址,若为整个网络则填入0.0.0.0或注释掉

啊,我好像发现问题了 authentication_string = password('密码') 应该是这样才对,我之前是直接跟的一个字符串…

回到IDEA测试 连接成功!

可以直接在IDEA中进行mysql操作啦