阿里云轻量服务器使用相关问题解决

撬动未来的支点 7月前 1086

1. 无法远程访问mysql

远程访问必须同时满足以下条件: 1.检查mysql用户权限,保证是 username @ %,也就是允许从所有主机访问。root一般默认为localhost访问,所以可以新建一个权限受限的用户,并允许其从远程登录。 2.mysqld服务必须监听所有ip,控制台执行sudo netstat -anolp,输出如下: 允许监听所有ip的3306端口 其中,:::3306 表示mysqld正在从所有地址监听3306端口,这是对的,不能是只从127.0.0.1上监听。 3.客户端连接时,端口要和第2条中的mysqld监听端口保持一致。 4.重点来了。阿里云轻量应用服务器中防火墙要让3306通过,同时如果你使用了宝塔面板,开启了防火墙,也要设置允许3306入站。如下图: 阿里云轻量应用服务器中防火墙要让3306通过 宝塔面板中防火墙放行3306端口 这两个防火墙必须同时开启。

2. 数据库插入时,遇到DEFINER不匹配的错误

错误内容:

errstr: SQLSTATE[HY000]: General error: 1449 The user specified as a definer ('user'@'%') does not exist

MySQL中的用户权限由用户名+登录主机+mysql数据库访问权限组成。同一个用户名,允许的登录主机不一样,那么mysql会认为权限检查不匹配。所以上面的提示很明确了,没找到 user @ % 这个用户,解决办法是新建一个具有这样权限的用户。如果不想新建,那么可以去查一下数据库中有哪些视图,触发器,存储过程是被这个权限的用户定义的,具体命令可以问一下AI。比如:

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS 
WHERE DEFINER = 'username@hostname';

找到以后,在phpAdmin中可以很容易修改为你想要设置的用户,以后就不会报错了。

最新回复 (0)
返回
发新帖