我在系统里创建了一个ODBC连接,连接指定的MYSQL,并保存(名字是MySqlDB)。经过测试通过没有问题。
然后我创建了一个LinkServer,选择ODBC,然后在数据源的选项上选择MySqlDB。
然后我调用了一句SQL语句 Select * from MySqlDB.UserDB.dbo.AdminList 测试。
结果报错:
链接服务器"MySqlDB"的 OLE DB 访问接口 "MSDASQL" 返回了消息 "[MySQL][ODBC 3.51 Driver]Access denied for user 'sa'@'192.168.0.225' (using password: YES)"。
消息 7303,级别 16,状态 1,第 1 行
无法初始化链接服务器 "FORUMBBS" 的 OLE DB 访问接口 "MSDASQL" 的数据源对象。我查询了我的ODBC,是可以正常连接的呀。奇怪的是,报错中的'sa'@'192.168.0.225' ,我的Mysql服务器设置正常的应该是'root'@'192.168.0.125',sa是我SQLServer的用户名,'192.168.0.225'是我的本机。我在ODBC里面设置的地址是192.168.0.125 用户名是root。为什么没有使用这个用户登陆呀?

解决方案 »

  1.   

    参考:--连接mysql安装MySQL的ODBC驱动MyODBC1、为MySQL建立一个ODBC系统数据源,例如:选择数据库为test ,数据源名称为 myDSN2、建立链接数据库
    EXEC sp_addlinkedserver  @server = 'MySQLTest', @srvproduct='MySQL', @provider = 'MSDASQL', @datasrc = 'myDSN'
    GO
    EXEC sp_addlinkedsrvlogin  @rmtsrvname='MySqlTest',@useself='false',@locallogin='sa',@rmtuser='mysql的用户名',@rmtpassword='mysql的密码'3、查询数据SELECT * FROM OPENQUERY (MySQLTest ,'select * from 表' )--来源网络
      

  2.   

    SELECT * FROM OPENQUERY (FORUMBBS ,'select top 1 * from adminlist' )链接服务器"FORUMBBS"的 OLE DB 访问接口 "MSDASQL" 返回了消息 "[MySQL][ODBC 3.51 Driver]Access denied for user 'sa'@'192.168.0.225' (using password: YES)"。
    消息 7303,级别 16,状态 1,第 3 行
    无法初始化链接服务器 "FORUMBBS" 的 OLE DB 访问接口 "MSDASQL" 的数据源对象。一样报错。
      

  3.   

    我知道了,需要重新映射一下权限表。如果Mysql修改密码后必须重新映射一下EXEC sp_addlinkedsrvlogin,谢谢大拿帮助,给分。