MySQL 8.0 Reference Manual Including MySQL NDB Cluster 8.0
This section provides troubleshooting suggestions for problems starting the server. For additional suggestions for Windows systems, see Section 2.3.5, “Troubleshooting a Microsoft Windows MySQL Server Installation”.
If you have problems starting the server, here are some things to try:
            Check the error log to
            see why the server does not start. Log files are located in
            the data
            directory (typically C:\Program
            Files\MySQL\MySQL Server 8.0\data on
            Windows, /usr/local/mysql/data for a
            Unix/Linux binary distribution, and
            /usr/local/var for a Unix/Linux source
            distribution). Look in the data directory for files with
            names of the form
            
            and
            host_name.err,
            where host_name.loghost_name is the name of
            your server host. Then examine the last few lines of these
            files. Use tail to display them:
          
$>tail$>host_name.errtailhost_name.log
            Specify any special options needed by the storage engines
            you are using. You can create a my.cnf
            file and specify startup options for the engines that you
            plan to use. If you are going to use storage engines that
            support transactional tables (InnoDB,
            NDB), be sure that you have
            them configured the way you want before starting the server.
            If you are using InnoDB tables, see
            Section 17.8, “InnoDB Configuration” for guidelines and
            Section 17.14, “InnoDB Startup Options and System Variables” for option syntax.
          
Although storage engines use default values for options that you omit, Oracle recommends that you review the available options and specify explicit values for any options whose defaults are not appropriate for your installation.
Make sure that the server knows where to find the data directory. The mysqld server uses this directory as its current directory. This is where it expects to find databases and where it expects to write log files. The server also writes the pid (process ID) file in the data directory.
            The default data directory location is hardcoded when the
            server is compiled. To determine what the default path
            settings are, invoke mysqld with the
            --verbose and
            --help options. If the data
            directory is located somewhere else on your system, specify
            that location with the
            --datadir option to
            mysqld or mysqld_safe,
            on the command line or in an option file. Otherwise, the
            server does not work properly. As an alternative to the
            --datadir option, you can
            specify mysqld the location of the base
            directory under which MySQL is installed with the
            --basedir, and
            mysqld looks for the
            data directory there.
          
            To check the effect of specifying path options, invoke
            mysqld with those options followed by the
            --verbose and
            --help options. For example,
            if you change location to the directory where
            mysqld is installed and then run the
            following command, it shows the effect of starting the
            server with a base directory of
            /usr/local:
          
$> ./mysqld --basedir=/usr/local --verbose --help
            You can specify other options such as
            --datadir as well, but
            --verbose and
            --help must be the last
            options.
          
            Once you determine the path settings you want, start the
            server without --verbose and
            --help.
          
If mysqld is currently running, you can find out what path settings it is using by executing this command:
$> mysqladmin variables
Or:
$> mysqladmin -h host_name variables
            host_name is the name of the
            MySQL server host.
          
Make sure that the server can access the data directory. The ownership and permissions of the data directory and its contents must allow the server to read and modify them.
            If you get Errcode 13 (which means
            Permission denied) when starting
            mysqld, this means that the privileges of
            the data directory or its contents do not permit server
            access. In this case, you change the permissions for the
            involved files and directories so that the server has the
            right to use them. You can also start the server as
            root, but this raises security issues and
            should be avoided.
          
            Change location to the data directory and check the
            ownership of the data directory and its contents to make
            sure the server has access. For example, if the data
            directory is /usr/local/mysql/var, use
            this command:
          
$> ls -la /usr/local/mysql/var
            If the data directory or its files or subdirectories are not
            owned by the login account that you use for running the
            server, change their ownership to that account. If the
            account is named mysql, use these
            commands:
          
$>chown -R mysql /usr/local/mysql/var$>chgrp -R mysql /usr/local/mysql/var
Even with correct ownership, MySQL might fail to start up if there is other security software running on your system that manages application access to various parts of the file system. In this case, reconfigure that software to enable mysqld to access the directories it uses during normal operation.
Verify that the network interfaces the server wants to use are available.
If either of the following errors occur, it means that some other program (perhaps another mysqld server) is using the TCP/IP port or Unix socket file that mysqld is trying to use:
Can't start server: Bind on TCP/IP port: Address already in use Can't start server: Bind on unix socket...
Use ps to determine whether you have another mysqld server running. If so, shut down the server before starting mysqld again. (If another server is running, and you really want to run multiple servers, you can find information about how to do so in Section 7.8, “Running Multiple MySQL Instances on One Machine”.)
            If no other server is running, execute the command
            telnet .
            (The default MySQL port number is 3306.) Then press Enter a
            couple of times. If you do not get an error message like
            your_host_name
            tcp_ip_port_numbertelnet: Unable to connect to remote host:
            Connection refused, some other program is using
            the TCP/IP port that mysqld is trying to
            use. Track down what program this is and disable it, or tell
            mysqld to listen to a different port with
            the --port option. In this
            case, specify the same non-default port number for client
            programs when connecting to the server using TCP/IP.
          
Another reason the port might be inaccessible is that you have a firewall running that blocks connections to it. If so, modify the firewall settings to permit access to the port.
            If the server starts but you cannot connect to it, make sure
            that you have an entry in /etc/hosts
            that looks like this:
          
127.0.0.1 localhost
            If you cannot get mysqld to start, try to
            make a trace file to find the problem by using the
            --debug option. See
            Section 7.9.4, “The DBUG Package”.