问题描述
最近需要在树莓派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
参考 https://blog.jasonmeridth.com/posts/unable-to-access-mysql-with-root-and-no-password-after-new-install-on-ubuntu/
解决步骤
第一步:安装mysql
sudo apt-get update
sudo apt-get install mysql-server
1
2
3
第二步:设置root的password和修改plugin字段
sudo mysql -uroot
连接mysql
1
2
USE mysql;
UPDATE user SET password=PASSWORD(‘123456′) WHERE user=’root’;
UPDATE user SET plugin=’mysql_native_password’ WHERE user=’root’;
FLUSH PRIVILEGES;
exit;
1
2
3
4
5
6
7
8
9
第三步:重启服务
sudo systemctl restart mysql
sudo systemctl status mysql
1
2
3
附加:完全卸载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 都必须使用正确的密码才能连接数据库