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

n8ghc7c1  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(323)

我正在尝试连接到linux服务器上现有的mysql数据库和项目中的scaffold表,并通过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 我该怎么办?

r8uurelv

r8uurelv1#

在尝试连接之前,有两件事需要理解。
1) 通常,允许数据库监听本地计算机,即localhost。
2) 作为mysql身份验证的数据库是成对的,即。user@host_name.
所以改变db想要的方式真的是在破坏安全。
现在这里是你可以改变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;`
e5nszbig

e5nszbig2#

如果您的mysql示例绑定到公共ip地址(您可以通过对该ip进行3306端口扫描来检查这一点—假设mysql在标准端口上运行),那么您需要为正在使用的用户授予数据库特权,如下所示:

GRANT ALL PRIVILEGES ON <yourdb>.* TO `<youruser>`@`<yourip>` IDENTIFIED by '<yourpassword>';

运行完后,需要运行 FLUSH PRIVILEGES; 命令。假设满足上述所有条件,您应该能够远程访问数据库。

相关问题