MySQL 无法在 WSL 下的 Ubuntu 20.04.3 LTS 上运行

MySQL 无法在 WSL 下的 Ubuntu 20.04.3 LTS 上运行

在尝试启动 MySQL 时,我一直在尝试解决以下问题:

2022-01-27T09:47:14.547946Z 0 [Warning] [MY-010139] [Server] Changed limits: max_open_files: 1024 (requested 8161)
2022-01-27T09:56:22.047681Z 0 [Warning] [MY-010142] [Server] Changed limits: table_open_cache: 431 (requested 4000) 
...
2022-01-27T09:56:22.265005Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/mysqld_tmp_file_case_insensitive_test.lower-test

我尝试过提高我的limits.conf文件值,但是/etc/service无论我在运行时进行什么更改,这些值都超过 10000(在某些情况下是 65535):

ulimit -Sa | grep "open files"

结果总是:

open files (-n) 1024

任何帮助都将不胜感激,但我只是看不到其他解决方案?

我还没有数据库,我甚至还没有设法启动 MySQL 来登录一次。

MySQL 版本 8.0.27 在 WSL 上的 Ubuntu 20.04.3 LTS 上运行

答案1

WSL 没有systemd。这就是为什么您的更改/etc/systemd/system/mysqld.service.d/limits.conf未应用的原因。因此ulimit -n返回1024

您可以/etc/security/limits.conf通过添加以下行来编辑该文件以增加每个用户的限制:

* soft nofile 10000
* hard nofile 10000

通过重新启动mysql服务,将读取并应用上述文件。要重新启动mysql服务,请执行:

sudo service mysql restart

用户的限制将更改mysql。要检查这一点,您可以运行以下命令:

ps -ef|grep -e ^mysql
mysql       90     1  0 18:28 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql      250    90  0 18:28 ?        00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=statie-ac-0027.pid

for pid in `ps -ef|grep -e ^mysql|awk '{print $2}'` ; do echo pid=$pid user=`ps -ef|awk '{if( $2 == '$pid' ) print $1}'`; sudo prlimit -p $pid --nofile ; done

pid=90 user=mysql
RESOURCE DESCRIPTION               SOFT  HARD UNITS
NOFILE   max number of open files 10000 10000 files
pid=250 user = mysql
RESOURCE DESCRIPTION               SOFT  HARD UNITS
NOFILE   max number of open files 10000 10000 files

附言

对于普通用户,我们似乎具有相同的状态(没有文件限制,没有读取更改),因为默认情况下不执行登录。但是如果你运行:

su <username>

然后读取限制文件并ulimit -n返回10000当前用户。

聚苯硫醚

我的回答受到以下启发:

相关内容