2024年4月7日,周日上午
在远程连接数据库时,可能会遇到如下问题:
Lost connection to MySQL server at ‘reading initial communication packet', system error: 0
解决的办法
第一步:修改my.cnf
my.cnf一般在/etc/mysql里面,确保my.cnf其中有如下片段:
[mysqld]
bind-address = 0.0.0.0
修改后记得重启MySQL服务器,可以用如下命令来重启:
sudo systemctl restart mysql
第二步:创建一个可以远程连接的账户
创建远程用户:为了允许远程访问,你需要在 MySQL 中创建一个具有远程访问权限的用户。你可以使用以下 SQL 命令创建一个新用户,并授予远程访问权限:
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
将 username
替换为你想要创建的用户名,password
替换为密码。'%'
表示允许该用户从任何 IP 地址进行连接。如果你希望只允许特定 IP 地址连接,可以将 %
替换为相应的 IP 地址。
授予权限:接下来,你需要为该用户授予适当的权限。例如,如果你希望该用户具有对所有数据库的读写权限,可以使用以下命令:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
这将授予该用户对所有数据库的所有权限,并允许他授权其他用户。如果你只想给予部分权限,可以调整 ALL PRIVILEGES
部分为具体的权限列表,例如 SELECT, INSERT, UPDATE, DELETE
等。
刷新权限:在完成用户授权后,你需要刷新 MySQL 的权限以使更改生效。可以使用以下命令刷新权限:
FLUSH PRIVILEGES;
执行后,MySQL 将重新加载权限表,并应用新的权限设置。