当前位置:  开发笔记 > 后端 > 正文

如何在mysql中启用跨数据库连接?

如何解决《如何在mysql中启用跨数据库连接?》经验,为你挑选了1个好方法。

我试图使用这样的查询将一些数据从我的生产数据库移植到我的沙盒:

INSERT `dbsandbox`.`SomeTable`(Field1, Field2, Field3)
SELECT t.Field1, t.Field2, t.Field3
FROM `dbprod`.`SomeTable` t;

当我尝试这种跨数据库连接时,我收到以下错误:

ERROR 1142(42000):对表'SomeTable'的用户'myusername'@'server.domain.tdl'拒绝SELECT命令

有问题的用户对两个数据库的相关表都有权限.我已经在unix mysql客户端和windows MySQL Query Browser应用程序中尝试了这个,结果相同.

我错过了什么?



1> Chris..:

事实证明这是一个权限问题.源数据库需要我用于访问任何表的用户名的密码.目标只需要用户名在localhost上.

即使我每次在跨数据库查询的上下文中使用密码启动MySQL客户端,也会尝试另一个连接.此连接不记得我最初使用密码对客户端进行了身份验证,因此从沙箱连接到生产数据库失败.显然,明确声明表的数据库名称有时也意味着需要另一个连接.

答案是从生产数据库启动查询,引用没有数据库限定符的本地表,然后插入到沙箱数据库表.这次它起作用了:

使用dbprod

插入dbsandbox.SomeTable(Field1,Field2,Field3)SELECT t.Field1,t.Field2,t.Field3 FROM SomeTablet;

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有