虚拟主机中Python连接MySQL报1045、1227权限错误问题求助
解决方案
方案1:使用Socket连接(最快生效,无需修改数据库权限)
MySQL默认支持Unix Socket本地连接,和你终端sudo mysql走的连接方式一致,不需要走TCP/IP网络,也不会触发IP访问权限校验,按以下步骤修改即可:
- 首先在终端执行
sudo mysql登录数据库后,执行以下命令查询Socket文件路径:
SELECT @@socket;
返回结果一般是/var/run/mysqld/mysqld.sock这类路径。
2. 修改Python连接代码,替换原来的连接配置:
database = mysql.connect( unix_socket = '/var/run/mysqld/mysqld.sock', # 替换为上一步查到的实际路径 user = 'ilyacherne', passwd = 'CENSORED', database = 'ilyacherne' )
如果还是报错,可以把unix_socket参数换成host='localhost',部分MySQL驱动会自动识别localhost走Socket连接。
方案2:开通TCP/IP连接权限
如果你必须用IP地址连接,需要先确认你登录的是高权限账号:
- 终端执行
sudo mysql登录,此时默认登录的是root@localhost账号,执行以下命令给ilyacherne用户开通对应IP的访问权限:
-- 允许ilyacherne从77.222.61.25登录,替换密码为你实际的数据库密码 GRANT ALL PRIVILEGES ON ilyacherne.* TO 'ilyacherne'@'77.222.61.25' IDENTIFIED BY '你的数据库密码'; FLUSH PRIVILEGES;
- 如果执行上述命令还是报权限不足,说明主机商限制了你的root账号权限,直接联系主机商帮你开通
ilyacherne用户从77.222.61.25访问数据库的权限即可。
额外排查点
- 确认你终端执行
mysql -u ilyacherne -p输入密码后是否能正常登录,如果不能登录说明用户本身的密码配置错误,需要主机商协助重置密码或者调整用户权限。 - 检查数据库是否开启了远程访问限制,部分主机商默认禁止MySQL绑定公网IP,只能本地访问。
内容的提问来源于stack exchange,提问作者ilya
相关产品推荐
相关产品推荐

