Openresty LUA Mysql连接错误

时间:2018-06-05 20:23:21

标签: nginx lua openresty

我一直在使用openresty lua并尝试连接到在我的本地主机上运行的mysql数据库。但是,我无法连接到它,我无法调试它,因为lua mysql客户端没有提供有关错误的任何信息。

    --
-- Created by IntelliJ IDEA.
-- User: AGK
-- Date: 6/5/18
-- Time: 2:14 PM
-- To change this template use File | Settings | File Templates.
--

local mysql = require "resty.mysql"

local _M={}
function _M.connect()


local db, err = mysql:new()
if not db then
    ngx.say("failed to instantiate mysql: ", err)
    return
end

db:set_timeout(1000) -- 1 sec

-- or connect to a unix domain socket file listened
-- by a mysql server:
--     local ok, err, errcode, sqlstate =
--           db:connect{
--              path = "/path/to/mysql.sock",
--              database = "ngx_test",
--              user = "ngx_test",
--              password = "ngx_test" }

local ok, err, errcode, sqlstate = db:connect{
    host = "127.0.0.1",
    port = 3306,
    database = "mydb",
    user = "root",
    password = "abcd1234",
    charset = "utf8",
    max_packet_size = 1024 * 1024,
    ssl = true,
    sslverify = true,
}

if not ok then
    ngx.say("failed to connect: ", err, ": ", errcode, " ", sqlstate)
    return
end

ngx.say("connected to mysql.")
end

return _M

此输出无法连接:连接失败:连接被拒绝:nil nil

知道这个简单程序可能有什么问题。注意:我在我的mac上运行mysql 5.7.x.

1 个答案:

答案 0 :(得分:1)

如果您在docker容器内运行 - 请勿连接到127.0.0.1

取决于你如何运行MySQL我们可能需要不同的解决方案。 我想你也将MySQL运行到容器中。

以这种方式为两个容器配置Docker网络,以便通过某个名称显示MySQL容器。

通常我会为此创建命名用户定义的网络。