使用jdbc连接数据库
eclipse使用jdbc连接mysql时的各个参数为:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test_db
jdbc.username=root
jdbc.password=123456
问题1:Illegal connection port value ‘3306:test_db’
原因分析:出现Illegal connection一般都是连接参数写错了,仔细检查!!!这里的:
应该是/
。就一个这个害我找了老半天,还是太久没用数据库太不熟练了。
问题2:client does not support authentication protocol requested by server
原因分析:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。
解决办法:
把用户密码登录的加密规则还原成mysql_native_password这种加密方式
- 进入命令行模式
mysql -u root -p"123456"
- 修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
- 刷新权限,使修改生效。
FLUSH PRIVILEGES;
- 查看表中相关信息,确认修改是否真正生效
use mysql;
select user,host,plugin from user where user='root';
问题3:Unknown initial character set index ‘255’ received from server. Initial client character set can be forced via the ‘characterEncoding’ property.
原因分析:MySQL驱动和数据库字符集设置不搭配
解决办法:连接数据库时设置字符集。
将以下语句:
String url = "jdbc:mysql://localhost:3306/test_db"
替换成:
String url = "jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8";