ホームページ >運用・保守 >Linuxの運用と保守 >Linux への mysql 8.0 のインストールの詳細な紹介 (コード例)

Linux への mysql 8.0 のインストールの詳細な紹介 (コード例)

不言
不言転載
2018-12-15 11:05:216783ブラウズ

この記事では、Linux での mysql 8.0 のインストール方法 (コード例) を詳しく紹介します。必要な方は参考にしていただければ幸いです。

mysql ファイルのダウンロードに苦労した後、Mysql8.0 のインストールを開始できます。

ファイルを解凍します

// 解压文件生成两个xz格式的压缩文件
$ tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar
mysql-router-8.0.13-linux-glibc2.12-x86_64.tar.xz
mysql-test-8.0.13-linux-glibc2.12-x86_64.tar.xz
// 我们需要先删掉/移除原有文件,才可以继续解压,因为解压出来的.tar文件和.tar.xz文件重名
mv mysql-8.0.13-linux-glibc2.12-x86_64.tar ../
xz -d mysql-router-8.0.13-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar
// 为了方便查找,改个名字
mv mysql-8.0.13-linux-glibc2.12-x86_64.tar mysql8

環境構成

ユーザーと権限の管理を開始するには、専用の mysql プロセスが必要です。

// 创建mysql系统用户和用户组
useradd -r mysql
// 给予安装目录mysql权限
chown mysql:mysql -R mysql8

独自の mysql 構成ファイルを構成します。複数の Mysql ライブラリがあるため、多くのパラメーターを手動で指定します。

[client]
socket=/home/work/lnmp/mysql8/tmp/mysql.sock
default-character-set=utf8

[mysql]
basedir=/home/work/lnmp/mysql8/
datadir=/home/work/lnmp/mysql8/data/
socket=/home/work/lnmp/mysql8/tmp/mysql.sock
port=3306
user=mysql
# 指定日志时间为系统时间
log_timestamps=SYSTEM
log-error=/home/work/lnmp/mysql8/log/mysql.err
# 指定字符集为utf8,因为mysql8.0中的默认字符集为utfmb4,会和其他程序引起兼容性问题
default-character-set=utf8

[mysqld]
basedir=/home/work/lnmp/mysql8/
datadir=/home/work/lnmp/mysql8/data/
socket=/home/work/lnmp/mysql8/tmp/mysql.sock
port=3306
user=mysql
log_timestamps=SYSTEM
collation-server = utf8_unicode_ci
character-set-server = utf8
# 指定默认认证的加密方式,mysql8.0中默认方式为caching_sha2_password,引起老版本兼容性问题
default_authentication_plugin= mysql_native_password

[mysqld_safe]
log-error=/home/work/lnmp/mysql8/log/mysqld_safe.err
pid-file=/home/work/lnmp/mysql8/tmp/mysqld.pid
socket=/home/work/lnmp/mysql8/tmp/mysql.sock

[mysql.server]
basedir=/home/work/lnmp/mysql8
socket=/home/work/lnmp/mysql8/tmp/mysql.sock

[mysqladmin]                                                                                                                                  
socket=/home/work/lnmp/mysql8/tmp/mysql.sock

これで、次の操作でエラー ログのパスを指定します。 if エラーが発生した場合は、ターミナルに表示されるエラーを確認するだけでなく、エラーログで詳細な情報を確認することを忘れないでください。

いくつかのファイルを指定したため、事前に作成する必要があります:

mkdir log
touch log/mysql.err
touch log/mysqld_safe.err
mkdir tmp
chown mysql:mysql -R ../*

データベースの初期化

初期化しない場合は、bin/ を使用します。 mysqld_safe を直接起動するには、mysql 環境を初期化する必要があるため、エラーが報告されます。この時点では、次の記事を参照してください。

$ bin/mysqld --initialize --user=mysql --basedir=/home/work/lnmp/mysql8/ --datadir=/home/work/lnmp/mysql8/data/
2018-12-13T06:15:03.159123Z 0 [System] [MY-013169] [Server] /home/work/lnmp/mysql8/bin/mysqld (mysqld 8.0.13) initializing of server in progress as process 1190
2018-12-13T06:15:05.255817Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: !/7oy-u%(XfZ
2018-12-13T06:15:06.135143Z 0 [System] [MY-013170] [Server] /home/work/lnmp/mysql8/bin/mysqld (mysqld 8.0.13) initializing of server has completed

プロンプトでは、root ユーザーと一時パスワードを作成したことが求められます。初期化は成功しました。

データベースの起動

現時点では、公式ドキュメントに従って、mysqld_safe コマンドを使用して起動します。

$ bin/mysqld_safe
2018-12-13T06:16:58.604154Z mysqld_safe Logging to '/home/work/lnmp/mysql8/log/mysql.err'.
2018-12-13T06:16:58.629249Z mysqld_safe Starting mysqld daemon with databases from /home/work/lnmp/mysql8/data

Openデータベース

データベースプロセスが開始され、新しいターミナルで通常通りmysqlデータベースを使用できます:

$ ps aux | grep mysql 
root      2141  0.0  0.0 815844  5328 pts/0    S+   14:16   0:00 /bin/sh bin/mysqld_safe
mysql     2319  1.0  0.5 1997492 374448 pts/0  Sl+  14:16   0:00 /home/work/lnmp/mysql8/bin/mysqld --basedir=/home/work/lnmp/mysql8/ --datadir=/home/work/lnmp/mysql8/data --plugin-dir=/home/work/lnmp/mysql8//lib/plugin --user=mysql --log-error=/home/work/lnmp/mysql8/log/mysql.err --pid-file=/home/work/lnmp/mysql8/tmp/mysqld.pid --socket=/home/work/lnmp/mysql8/tmp/mysql.sock --port=3306
work     25258  0.0  0.0 105356   824 pts/1    S+   14:18   0:00 grep mysql

しかし、mysqlコマンドを直接使用するとエラーが報告されます:

$ bin/mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

mysql.sock の役割の説明によると、mysql.sock のパスを指定するだけです:

bin/mysql -S /home/work/lnmp/mysql8/tmp/mysql.sock -h localhost -uroot -p
Enter password:

初期パスワードを変更します

#データベースを開いてコマンドを使用すると、初期の一時パスワードを変更するように求められます:

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
パスワードの変更:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.05 sec)
再接続すると、新しいパスワードが有効になります。

リンク グローバル コマンド

現時点では、mysql を呼び出すにはパス /home/work/lnmp/mysql8/bin/mysql または相対パスのみを使用できます。リンクはグローバル コマンドである必要があります:

$ ln -s /home/work/lnmp/mysql8/bin/mysql /usr/bin/
$ ln -s /home/work/lnmp/mysql8/bin/mysql_safe /usr/bin/

ソケット ファイルを指定する

バージョン 8.0 では、mysql コマンドによってクエリされるデフォルトのソケット パスを変更するために多くの方法を試しました。 my.cnf それでも失敗したため、デフォルトのパスにソケット ファイルをリンクする必要がありました:

ln -s /home/work/lnmp/mysql8/tmp/mysql.sock /tmp/
その後、mysql コマンドを呼び出しますが、エラーは報告されません。

データベースを再起動します

処理中、パラメーターをデバッグするときにデータベースを再起動する必要がある場合があります:

// 杀死进程,相当于停止
cat tmp/mysqld.pid | xargs kill
// 正常启动mysql
bin/mysqld_safe  --defaults-file=/home/work/lnmp/mysql8/my.cnf

新しいユーザーを追加し、権限の付与

mysql8 でユーザーを作成し、値を割り当てたところ、結果はエラーになりました。

mysql > grant all privileges on *.* to root@localhost indentified by '123456';
ERROR 1064 (42000): 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 'indentified by '123456'' at line 1
オンライン情報によると、Mysql8 が次の操作を分離しているためです。アカウントの作成と権限の付与:

// 创建账户
create user '用户名'@'访问主机' identified by '密码';
// 赋予权限(修改权限时在后面加with grant option)
grant 权限列表 on 数据库 to '用户名'@'访问主机' ;
// 刷新权限
flush privileges;

概要

ファイルを解凍した後、mysql ユーザーとユーザー グループを作成し、my.cnf 構成ファイルを構成し、権限を変更します。データベースの初期化と起動、データベースのオープン、初期パスワードの変更、グローバル コマンドの接続とソケット ファイル パスの指定を行うと、すべてのインストール作業が完了しました。

以上がLinux への mysql 8.0 のインストールの詳細な紹介 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。