树莓派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
参考 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 都必须使用正确的密码才能连接数据库

远程连接的问题:在/etc/mysql/mariadb.conf.d/50-server.conf中,将bind-address=127.0.0.1改成bind-address=0.0.0.0,重启系统即可。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注