代码之家  ›  专栏  ›  技术社区  ›  apil.tamang

/usr/sbin/mysql代码=退出状态203/EXEC错误

  •  0
  • apil.tamang  · 技术社区  · 5 年前

    我不知道我到底做错了什么,但可能是我做了一些“chown”手术。我试图允许用户&;mysql组:mysql可以访问/media/usb驱动器,但可能无意中更改了其他内容。

    当我这样做的时候 sudo systemctl start mysql.service 我犯了一个错误。经检查 sudo systemctl status mysqld ,我得到以下内容:

    mysql.service - MySQL Community Server
       Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
       Active: activating (start-post) (Result: exit-code) since Fri 2020-06-19 08:11:01 EDT; 19s ago
      Process: 15459 ExecStart=/usr/sbin/mysqld (code=exited, status=203/EXEC)
      Process: 15444 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
     Main PID: 15459 (code=exited, status=203/EXEC);         : 15460 (mysql-systemd-s)
        Tasks: 2
       Memory: 2.4M
          CPU: 175ms
       CGroup: /system.slice/mysql.service
               └─control
                 ├─15460 /bin/bash /usr/share/mysql/mysql-systemd-start post
                 └─15687 sleep 1
    
    Jun 19 08:11:01 apil-dlrig systemd[1]: Starting MySQL Community Server...
    Jun 19 08:11:01 apil-dlrig systemd[1]: mysql.service: Main process exited, code=exited, status=203/EXEC
    

    当我检查所有权时 /var/lib/mysql ,我得到以下内容,这似乎是合理的。即用户 mysql 对此文件夹拥有完全所有权。

    apil@apil-dlrig:~$ sudo ls -la /var/lib/mysql
    total 176212
    drwx------  7 mysql mysql     4096 Jun 19 07:34 .
    drwxr-xr-x 79 root  root      4096 Oct 30  2019 ..
    -rw-r-----  1 mysql mysql       56 Oct 20  2019 auto.cnf
    -rw-------  1 mysql mysql     1680 Nov 22  2019 ca-key.pem
    -rw-r--r--  1 mysql mysql     1112 Nov 22  2019 ca.pem
    -rw-r--r--  1 mysql mysql     1112 Nov 22  2019 client-cert.pem
    -rw-------  1 mysql mysql     1676 Nov 22  2019 client-key.pem
    -rw-r--r--  1 mysql mysql        0 May  5 06:38 debian-5.7.flag
    drwxr-x---  2 mysql mysql     4096 Jun  6 13:44 foo
    -rw-r-----  1 mysql mysql      665 Jun 19 07:34 ib_buffer_pool
    -rw-r-----  1 mysql mysql 79691776 Jun 19 07:34 ibdata1
    -rw-r-----  1 mysql mysql 50331648 Jun 19 07:34 ib_logfile0
    -rw-r-----  1 mysql mysql 50331648 Oct 20  2019 ib_logfile1
    -rw-r-----  1 mysql mysql      155 Jun 16 07:23 keyring_backup
    drwxr-x---  2 mysql mysql     4096 May  5 06:38 mysql
    -rw-r--r--  1 mysql mysql        6 May  5 06:38 mysql_upgrade_info
    drwxr-x---  2 mysql mysql     4096 May  5 06:38 performance_schema
    -rw-------  1 mysql mysql     1680 Nov 22  2019 private_key.pem
    drwxr-x---  2 mysql mysql     4096 Jun 16 07:25 prod
    -rw-r--r--  1 mysql mysql      452 Nov 22  2019 public_key.pem
    -rw-r--r--  1 mysql mysql     1112 Nov 22  2019 server-cert.pem
    -rw-------  1 mysql mysql     1680 Nov 22  2019 server-key.pem
    drwxr-x---  2 mysql mysql    12288 Nov 22  2019 sys
    

    这个 /etc/systemd/system/multi.user.wants.targets/mysql.service 看起来如下。这里什么都不应该改变,也就是说,它和MySQL一样默认。

    # MySQL systemd service file
    
    [Unit]
    Description=MySQL Community Server
    After=network.target
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]
    User=mysql
    Group=mysql
    PermissionsStartOnly=true
    ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
    ExecStart=/usr/sbin/mysqld
    ExecStartPost=/usr/share/mysql/mysql-systemd-start post
    TimeoutSec=600
    Restart=on-failure
    RuntimeDirectory=mysqld
    RuntimeDirectoryMode=755
    

    想知道可能出了什么问题。任何帮助都将不胜感激。

    谢谢

    1 回复  |  直到 5 年前
        1
  •  3
  •   apil.tamang    5 年前

    如果你看看原始错误,问题是: ExecStart=/usr/sbin/mysqld (code=exited, status=203/EXEC) 看起来像是某种执行特权 mysqld 文件?也查过了:

    ls -la /usr/sbin/mysqld 它回来了

    -rw-r--r-- 1 root root 24585896 Apr 30 10:52 /usr/sbin/mysqld
    

    所以问题(我认为)是root用户没有执行权限。看前三个字母 rw- 最后一个破折号表示没有执行特权。

    所以我简单地运行了以下命令 chmod 777 /usr/sbin/mysqld ,之后所有权将恢复为

    -rwxrwxrwx 1 root root 24585896 Apr 30 10:52 /usr/sbin/mysqld
    

    现在, systemctl start mysql.service 跑得很好。

    令人惊讶的是,在stackoverflow上写一个问题的过程实际上在80%的情况下都能帮助我解决问题。再次感谢,各位。