我试图连接到Linux服务器上的现有mysql数据库和项目中的脚手架表,并通过EFCore与它们一起使用。
我使用此命令行进行脚手架:
dotnet ef dbcontext scaffold "server={IP};port={PORT};userid={USER_ID};password={PASSWORD};database={DB_NAME};" Pomelo.EntityFrameworkCore.MySql -o Models -f
但它向我显示了此错误:
Host '{MY_IP}' is not allowed to connect to this MySQL server
我正在Pomelo.EntityFrameworkCore.MySql
上使用.NET Core 2.1 SDK
库
我该怎么办?
答案 0 :(得分:0)
如果您的MySQL实例绑定到公共IP地址(您可以通过对该IP进行3306端口扫描(假设MySQL在标准端口上运行)进行检查,那么您需要为用户授予数据库特权使用方法如下:
GRANT ALL PRIVILEGES ON <yourdb>.* TO `<youruser>`@`<yourip>` IDENTIFIED by '<yourpassword>';
运行此命令后,需要运行FLUSH PRIVILEGES;
命令。假设满足以上所有条件,则您应该可以远程访问数据库。
答案 1 :(得分:-1)
在尝试连接之前,有两点要理解。
1)通常,允许数据库监听本地计算机,即localhost。
2)作为mysql身份验证的数据库成对出现,即user @ host_name。
因此,改变数据库希望您真正搞砸安全性的方式。
现在这是您可以更改MySQL监听世界其他地方的方法。
1) go to **my.cnf**, Check ‘**bind-address**’, comment this line. it
must be bind with `localhost` or `127.0.0.1`.
2) go to database MySQL, table users, column host replace
`localhost` to `"%"`, so the anyone from anywhere can connect.
3) `CREATE USER ‘root’@‘%’ IDENTIFIED BY ‘some_pass’`;
4) `GRANT ALL PRIVILEGES ON *.* TO ‘root’@‘%’;`
5) `FLUSH PRIVILEGES;`