从本地计算机连接到服务器上的现有MySQL数据库

时间:2018-12-05 11:54:30

标签: mysql asp.net-core asp.net-core-2.1

我试图连接到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

我该怎么办?

2 个答案:

答案 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;`