树莓派mysql无需密码连接的问题
问题描述
最近需要在树莓派3B+上运行一个Java程序,这个java程序使用到了mysql数据库。在这个过程中遇到了一个问题:
- 安装mysql-server的过程没有提示输入root的password
- 安装成功后,输入指令mysql -uroot,提示Access denied for user ‘root’@’localhost’
- 输入sudo mysql -uroot可以直接连接成功
- 输入sudo mysql -uroot -p后回车输入任意password也可以直接连接成功
- 输入mysql -h 127.0.0.1 -P 3306 -uroot -p提示Access denied for user ‘root’@’localhost’
因此,java程序通过jdbc来连接数据库也是提示:Access denied for user ‘root’@’localhost’
原因
- 需要给root设置password
- 需要将用户表中plugin字段由auth_plugin设置成mysql_native_password
解决步骤
- 第一步:安装mysql
sudo apt-get update
sudo apt-get install mysql-server
- 第二步:设置root的password和修改plugin字段
sudo mysql -uroot
#连接mysql
USE mysql;
UPDATE user SET password=PASSWORD('123456') WHERE user='root';
UPDATE user SET plugin='mysql_native_password' WHERE user='root';
FLUSH PRIVILEGES;
exit;
- 第三步:重启服务
sudo systemctl restart mysql
sudo systemctl status mysql
- 附加:完全卸载mysql(如果以上执行成功了可忽略这一步)
sudo apt-ge autoremove --purge mysql-server
sudo apt-get remove mysqyl-server
sudo apt-get remove mysql-common #重要
sudo apt-get autoremove mysql-server
效果
- 不管是否加sudo 都必须使用正确的密码才能连接数据库
- 远程连接的问题:在/etc/mysql/mariadb.conf.d/50-server.conf中,将bind-address=127.0.0.1改成bind-address=0.0.0.0,重启系统即可。