【问题标题】:Cannot manage docker-based mysql server from Linux无法从 Linux 管理基于 docker 的 mysql 服务器
【发布时间】:2020-06-30 06:24:52
【问题描述】:

我在 ubuntu EC2 中使用 docker 容器安装了一个 mssql 服务器,如下所示:

sudo docker run --name my_mssql -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<mypassword>" -p 1433:1433 -v /home/ubuntu/db:/var/opt/mssql -d microsoft/mssql-server-linux
sudo netstat -lpnt |grep 1433

显示 1433 正在监听

我可以使用用于 MSSQL 的 SQLPRO 使用 username=sa 和 password=mypassword 登录 mssql 服务器 - 一个数据库管理器,然后我可以从该管理器创建一个数据库。

但是,如果我从安装了 mssql 服务器的 EC2 操作 mssql 服务器,则使用以下命令,

mysql -h <EC2 IP> -P 1433 -u sa -p

然后提供密码,它就卡在那里,最后停止连接并显示错误消息:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2

为什么我无法从 ubuntu EC2 操作 mssql 服务器?我该怎么做?

【问题讨论】:

  • MySQL 是一种产品,SQL Server 是另一种产品。你不能使用mysql 连接到 SQL Server,就像你不能使用它连接到 Oracle、DB2、PostgreSQL 或 SQLite 一样

标签: sql-server docker


【解决方案1】:

您的数据库服务器是MSSQL,而您正尝试使用Mysql 客户端与MSSQL 连接,这绝对行不通。

Can I use mysql to connect to SQL Server?

microsoft/mssql-server-linux

您可以使用验证可访问性

telnet EC2_IP 1433

或者您可以使用sqlcmdMSSQL client 连接您的数据库容器。

【讨论】:

  • 谢谢我现在意识到我用来连接mssql服务器的命令是mysql,我还以为是mssql。这两个词看起来很像。谢谢 我已经安装了 sqlcmd 并用它来登录 mssql 服务器。
【解决方案2】:

您使用的是 SQL Server,而不是 MySQL。您不能使用其他数据库的工具连接到它。

你需要使用SQL Server's command-line tools:

  • sqlcmd是CLI查询工具,类似于mysql
  • bcp 用于批量导入/导出

您还可以使用Azure Data Studio(最初是 SQL Server Operations Studio 的不幸营销名称)。 ADS 可以直接连接 SQL Server 和PostgreSQL through an extension

它是一个类似于 Visual Studio Code 的跨平台编辑器/IDE,用于查询 visualizing results、管理数据库和执行 Python scripts and Jupiter Notebooks。它带有开箱即用的server and database dashboards。还有几个扩展用于高级监控和故障排除。

创建新仪表板based on your own queries 也很简单:只需将可视化 JSON 定义复制到设置文件中即可。

【讨论】:

  • 谢谢我现在意识到我用来连接mssql服务器的命令是mysql,我还以为是mssql。这两个词看起来很像。谢谢我已经安装了 sqlcmd 并使用它来登录 mssql 服务器。
最近更新 更多