Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

前端 未结 18 2137
轮回少年
轮回少年 2020-12-04 15:29

I am on a server that has afresh install on RHEL 5. I was able to install Apache and PHP just fine., but I am having serious trouble with my MySQL installation. I tried t

相关标签:
18条回答
  • 2020-12-04 15:40

    In Windows run the following commands in the command prompt as adminstrator

    Step 1:
    mysql_install_db.exe
    
    Step 2:
    mysqld --initialize
    
    Step 3:
    mysqld --console
    
    Step 4:
    In windows
    
    Step 4:
    mysqladmin -u root password "XXXXXXX"
    
    Step 5:
    mysql -u root -p
    

    0 讨论(0)
  • 2020-12-04 15:42

    For myself, I had to do:

    yum remove mysql*
    
    rm -rf /var/lib/mysql/
    cp /etc/my.cnf ~/my.cnf.bkup
    
    yum install -y mysql-server mysql-client
    
    mysql_install_db
    
    chown -R mysql:mysql /var/lib/mysql
    chown -R mysql:mysql /var/log/mysql
    
    service mysql start
    

    Then I was able to get back into my databases and configure them again after I nuked them the first go around.

    0 讨论(0)
  • 2020-12-04 15:43

    If you have a server which used to happily run MySQL, but now gives this error, then an uninstall and re-install of MySQL is overkill.

    In my case, the server died and took a few disk blocks with it. This affected a few files, including /var/lib/mysql/mysql/host.frm and /var/lib/mysql/mysql/proc.frm

    Luckily, I could copy these from another server, and this got me past that table error.

    0 讨论(0)
  • 2020-12-04 15:45

    After chown and chgrp'ing /var/lib/mysql per the answer by @Bad Programmer, you may also have to execute the following command:

    sudo mysql_install_db --user=mysql --ldata=/var/lib/mysql
    

    Then restart your mysqld.

    0 讨论(0)
  • 2020-12-04 15:45
    mysql_install_db –-user=mysql --ldata=/var/lib/mysql
    

    Worked for me in Centos 7

    0 讨论(0)
  • 2020-12-04 15:45

    On CentOS EL 6 and perhaps on earlier versions there is one way to get into this same mess.

    Install CentOS EL6 with a minimal installation. For example I used kickstart to install the following:

    %packages
    @core
    acpid
    bison
    cmake
    dhcp-common
    flex
    gcc
    gcc-c++
    git
    libaio-devel
    make
    man
    ncurses-devel
    perl
    ntp
    ntpdate
    pciutils
    tar
    tcpdump
    wget
    %end
    

    You will find that one of the dependencies of the above list is mysql-libs. I found that my system has a default my.cnf in /etc and this contains:

    [mysqld]
    dataddir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    

    When you build from the Generic Linux (Architecture Independent), Compressed TAR Archive your default data directory is /usr/local/mysql/data which conflicts with the /etc/my.cnf already present which defines datadir=/var/lib/mysql. Also the pid-file defined in the same file does not have permissions for the mysql user/group to write to it in /var/run/mysqld.

    A quick remedy is to mv /etc/my.cnf /etc/my.cnf.old which should get your generic source procedure working.

    Of course the experience is different of you use the source RPMs.

    0 讨论(0)
提交回复
热议问题