gpt4 book ai didi

mysql - Ubuntu Linux 18.04 WSL 在 Windows : MariaDB service start fails

转载 作者:行者123 更新时间:2023-12-04 18:37:22 31 4
gpt4 key购买 nike

在我的 Linux WSL for Windows 中首次安装 MariaDB 存储库配置工具后(如 MariaDB Download Page 中所述),我执行了 mysql但有一个套接字错误。 netstat -apn | grep mysql什么都不显示,表示mysql服务已停止; sudo apt list | grep *mysql-server*说明我已经安装成功了mysql-server .
但是,正如我尝试 sudo service mysql start ,命令行给出:

 * Starting MariaDB database server mysqld                 [fail]
我尝试了以下方法,但都失败了并得到了相同的答案:
  • 使用 /etc/init.d/mysql start
  • 删除 /var/lib/mysql/ib_logfile0/var/lib/mysql/ib_logfile1
  • 升级/var/lib/mysql的访问权限使用 chmod -R 777 /var/lib/mysql
  • 删除 /var/lib/mysql/ 中的所有内容
  • 使用 port=1112 更改端口设置在 /etc/my.cnf (因为我在 Windows 端有另一个 mysql)
  • /etc/my.cnf 中填写其他信息(我的配置文件在安装后最初是空的,我填写了 basedirdatadirsocketlog_errorpid-file 属性)
  • 尝试systemctl而不是 service (这失败了,因为 Linux WSL 使用 sysvinit 而不是 systemd )

  • 如何启动我的 MariaDB 服务?谢谢

    最佳答案

    我能够在 WSL1 上重现您的问题(或看起来非常相似的问题)。你能确认你使用的是 WSL1 吗?
    我启动了 Ubuntu 20.04 的两个克隆实例(wsl --import 的干净备份)——一个在 WSL1 上,另一个在 WSL2 上。不幸的是,我没有一个方便的 18.04 可以使用,但我希望问题是一样的。
    在 WSL2 上,一切正常。在安装步骤之后(几乎是您在评论中添加的那些,但对于 20.04),我能够:sudo service mariadb start然后 sudo mysql -u root成功地。
    然而,在 WSL1 上,MariaDB 安装似乎以一种奇怪的方式失败。它不会创建 /etc/mysql/mariadb.cnf ,这导致您看到的内容为空 /etc/mysql/my.cnf , 因为它是 mariadb.cnf 的符号链接(symbolic link).
    所以我手动创建了 mariadb.cnf:sudo vi /etc/mysql/mariadb.cnf内容:

    # The MariaDB configuration file
    #
    # The MariaDB/MySQL tools read configuration files in the following order:
    # 0. "/etc/mysql/my.cnf" symlinks to this file, reason why all the rest is read.
    # 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
    # 2. "/etc/mysql/conf.d/*.cnf" to set global options.
    # 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
    # 4. "~/.my.cnf" to set user-specific options.
    #
    # If the same option is defined multiple times, the last one will apply.
    #
    # One can use all long options that the program supports.
    # Run program with --help to get a list of available options and with
    # --print-defaults to see which it would actually understand and use.
    #
    # If you are new to MariaDB, check out https://mariadb.com/kb/en/basic-mariadb-articles/

    #
    # This group is read both by the client and the server
    # use it for options that affect everything
    #
    [client-server]
    # Port or socket location where to connect
    # port = 3306
    socket = /run/mysqld/mysqld.sock

    # Import all .cnf files from configuration directory
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mariadb.conf.d/
    这只是默认的 mariadb.cnf这是由 WSL2 上的安装正确创建的。
    尝试启动服务然后给出一个关于缺少 /etc/mysql/debian-start 的错误。 ,所以我重复了相同的复制步骤: sudo vi /etc/mysql/debian-start与内容:
    #!/bin/bash
    #
    # This script is executed by "/etc/init.d/mariadb" on every (re)start.
    #
    # Changes to this file will be preserved when updating the Debian package.
    #
    # NOTE: This file is read only by the traditional SysV init script, not systemd.
    #

    source /usr/share/mysql/debian-start.inc.sh

    # Read default/mysql first and then default/mariadb just like the init.d file does
    if [ -f /etc/default/mysql ]; then
    . /etc/default/mysql
    fi

    if [ -f /etc/default/mariadb ]; then
    . /etc/default/mariadb
    fi

    MYSQL="/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf"
    MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
    # Don't run full mysql_upgrade on every server restart, use --version-check to do it only once
    MYUPGRADE="/usr/bin/mysql_upgrade --defaults-extra-file=/etc/mysql/debian.cnf --version-check"
    MYCHECK="/usr/bin/mysqlcheck --defaults-file=/etc/mysql/debian.cnf"
    MYCHECK_SUBJECT="WARNING: mysqlcheck has found corrupt tables"
    MYCHECK_PARAMS="--all-databases --fast --silent"
    MYCHECK_RCPT="${MYCHECK_RCPT:-root}"

    ## Checking for corrupt, not cleanly closed (only for MyISAM and Aria engines) and upgrade needing tables.

    # The following commands should be run when the server is up but in background
    # where they do not block the server start and in one shell instance so that
    # they run sequentially. They are supposed not to echo anything to stdout.
    # If you want to disable the check for crashed tables comment
    # "check_for_crashed_tables" out.
    # (There may be no output to stdout inside the background process!)

    # Need to ignore SIGHUP, as otherwise a SIGHUP can sometimes abort the upgrade
    # process in the middle.
    trap "" SIGHUP
    (
    upgrade_system_tables_if_necessary;
    check_root_accounts;
    check_for_crashed_tables;
    ) >&2 &

    exit 0
    然后 chmod 755 /etc/mysql/debian-start之后,瞧: sudo service mariadb restart sudo mysql -u root
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 32
    Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution

    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    MariaDB [(none)]>
    鉴于您迄今为止尝试过的步骤,我建议您将几乎所有这些都吹走以尝试“干净”重新开始:
    sudo apt remove mariadb-server
    sudo apt autoremove
    sudo rm -rf /etc/mysql
    sudo rm -rf /var/lib/mysql
    sudo rm -rf /usr/lib/mysql
    然后重新安装 mariadb-server 并按照上述步骤创建正确的文件。

    关于mysql - Ubuntu Linux 18.04 WSL 在 Windows : MariaDB service start fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65686836/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com