序文
最近、Linux CentOS7システムにmysql8.0.13をインストールする際に発生したいくつかの手順と問題を整理し、共有します。
1
インストールとエラー処理
https://www.mysql.com/downloads/msyqlダウンロードページにアクセスし、コミュニティバージョンを選択します
Linuxのバージョンを確認し、対応するバージョンを選択してダウンロードします
[ root@VM_0_14_centos mysql]# tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
[ root@VM_0_14_centos mysql]# cp -rv mysql-8.0.13-linux-glibc2.12-x86_64 /usr/local
[ root@VM_0_14_centos mysql]# cd /usr/local
[ root@VM_0_14_centos local]# mv mysql-8.0.13-linux-glibc2.12-x86_64 mysql
useradd -s /sbin/nologin -M mysql
/usr/local/mysql/bin/mysqld --initialize --user=mysql
この時点で一時的なパスワードが生成されます
[ root@VM_0_14_centos mysql]# /usr/local/mysql/bin/mysqld --initialize --user=mysql
2019- 01- 20 T10:56:07.718326Z 0[System][MY-013169][Server]/usr/local/mysql/bin/mysqld(mysqld 8.0.13) initializing of server in progress as process 58262019-01-20T10:56:16.915217Z 5[Note][MY-010454][Server] A temporary password is generated for root@localhost: twi=Tlsi<0O!2019-01-20T10:56:20.410563Z 0[System][MY-013170][Server]/usr/local/mysql/bin/mysqld(mysqld 8.0.13) initializing of server has completed
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
vim /etc/my.cnf
[ mysqld]
basedir =/usr/local/mysql
datadir =/var/lib/mysql
socket =/var/lib/mysql/mysql.sock
character-set-server=utf8
[ client]
socket =/var/lib/mysql/mysql.sock
default-character-set=utf8
service mysqld start
エラーを報告する
mysqld_safe Directory '/var/lib/mysql'for UNIX socket file don't exists.
1つは/ var / lib / mysqlディレクトリがないため、もう1つは書き込み権限がないため、mysql.sockファイルを生成できないためです。
[ root@VM_0_14_centos lib]# mkdir mysql
[ root@VM_0_14_centos lib]# chmod 777/var/lib/mysql
service mysqld startを再度実行し、別のエラーを報告します
Starting MySQL. ERROR! The server quit without updating PID file(/var/lib/mysql/VM_0_14_centos.pid).
特定のエラーメッセージを印刷します
[ root@VM_0_14_centos mysql]# cat VM_0_14_centos.err
2019- 01- 20 T11:11:45.906800Z 0[System][MY-010116][Server]/usr/local/mysql/bin/mysqld(mysqld 8.0.13) starting as process 77882019-01-20T11:11:45.910813Z 0[Warning][MY-013242][Server]--character-set-server:'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.2019-01-20T11:11:45.925456Z 1[ERROR][MY-011011][Server] Failed to find valid data directory.2019-01-20T11:11:45.925586Z 0[ERROR][MY-010020][Server] Data Dictionary initialization failed.2019-01-20T11:11:45.925600Z 0[ERROR][MY-010119][Server] Aborting
2019- 01- 20 T11:11:45.926342Z 0[System][MY-010910][Server]/usr/local/mysql/bin/mysqld: Shutdown complete(mysqld 8.0.13) MySQL Community Server - GPL.2019-01-20T11:12:00.049920Z 0[System][MY-010116][Server]/usr/local/mysql/bin/mysqld(mysqld 8.0.13) starting as process 79752019-01-20T11:12:00.052469Z 0[Warning][MY-013242][Server]--character-set-server:'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.2019-01-20T11:12:00.060600Z 1[ERROR][MY-011011][Server] Failed to find valid data directory.2019-01-20T11:12:00.060745Z 0[ERROR][MY-010020][Server] Data Dictionary initialization failed.2019-01-20T11:12:00.060759Z 0[ERROR][MY-010119][Server] Aborting
2019- 01- 20 T11:12:00.061610Z 0[System][MY-010910][Server]/usr/local/mysql/bin/mysqld: Shutdown complete(mysqld 8.0.13) MySQL Community Server - GPL.
特定の問題がわからないため、service --status-allを実行すると、エラーメッセージが表示されます
ERROR! MySQL is not running, but lock file(/var/lock/subsys/mysql) exists
一部のネット市民は、ファイルを削除するだけで十分だと言っていましたが、私がそれを削除しても役に立たなかったのです。
次に、今すぐerrファイルを確認します。重要なエラーはこれらの2行である必要があります
2019- 01- 20 T11:11:45.925456Z 1[ERROR][MY-011011][Server] Failed to find valid data directory.2019-01-20T11:11:45.925586Z 0[ERROR][MY-010020][Server] Data Dictionary initialization failed.
そこで、my.cnfを検索しました。データディレクトリに関連する構成はdatadir = / var / lib / mysqlです。この行を削除しようとしました。結果は成功し、サービスmysqldの開始は成功しました。
解決策は次のとおりです。
cd /usr/local/bin
ln -fs /usr/local/mysql/bin/mysql mysql
you must reset your password using ALTER USER statement before executing this statement.
解決:
alter user user() identified by '123456';
権限構成の変更
grant all privileges on *.* to 'root'@'%' identified by '123456';
しかし、エラー
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '123456' at line 1
解決:
use mysql;
update user set host ='%' where user ='root';
flush privileges;
次に、Navicatとの接続時にエラーが報告されます
Client does not support authentication protocol requested by server; consider upgrading MySQL client
解決:
ALTER USER 'root'@'*' IDENTIFIED WITH mysql_native_password BY '123456';
Recommended Posts