在我的 GitHub Action 中,我使用的是 Linux 运行器(Ubuntu 18.04 和 20.04),并且我想使用 MySQL 数据库。因此,为了进行设置,我运行了一个脚本,例如
sudo apt update
sudo apt install mysql-server
sudo mysql < someInstructions.txt
但是,当我在 GitHub Actions 上运行此脚本时,我收到以下错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
所以我认为 MySQL 服务器在安装后没有运行(我已验证)。这很奇怪,因为 Ubuntu 软件包的文档明确指出服务器应该在成功安装后运行。
无论如何,然后我使用 sudo systemctl start mysql.service
启动 MySQL 服务器,但现在我收到此错误
'Access denied for user 'root'@'localhost' (using password: NO)'
这真的让我感到困惑,因为 sudo mysql
应该以 root 身份连接到数据库。我验证这适用于常规 Ubuntu 安装。
有谁知道我如何连接到 GitHub Actions 上的 MySQL 数据库?
回答1
混淆的根源在于,当使用 GitHub Actions (或更具体地说:GitHub 托管的运行器之一)时,您会得到一个已安装 MySQL 的 Linux 映像。因此,当执行 sudo apt install mysql-server
时,不会触发实际安装。
因此,安装后通常发生的默认设置也不适用,因为它永远不会执行。相反,GitHub 已经预先配置了 MySQL 服务器,以便用户 root
具有明确的密码设置(这就是为什么普通的 sudo mysql
不起作用的原因)。用户 root
的默认密码是 root
。
另请注意,默认情况下 MySQL 服务器已禁用,因此您必须先启动它(如问题中所述)。启动并运行后,您可以使用连接到它
sudo mysql --user=root --password=root
参考: