MySQL 8 の公式バージョン 8.0.11 がリリースされました。公式発表によると、MySQL 8 は MySQL 5.7 より 2 倍高速で、多くの改善と高速なパフォーマンスをもたらします。結局誰が最強なのか?参照: MySQL 5.7 と 8.0 ではどちらのパフォーマンスが優れていますか? MySQL 8.0 のインストール (YUM 方式) 1. まず、システムのデフォルトまたは以前にインストールされていた可能性のある他のバージョンの MySQL を削除します。 # for i in $(rpm -qa|grep mysql);do rpm -e $i --nodeps;done # rm -rf /var/lib/mysql && rm -rf /etc/my.cnf 2.Mysql8.0のyumリポジトリをインストールする mysql80-コミュニティリリース-el7-1.noarch.rpm # yum ローカルインストール https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm 3. MySQL 8.0をインストールする # yum で mysql-community-server をインストールします #MySQL サーバーを起動し、MySQL の自動起動を実行します# systemctl start mysqld # systemctl でmysqldを有効にする # systemctl ステータス mysqld [root@localhost opt]# netstat -lantp | grep 3306 tcp6 0 0 :::33060 :::* LISTEN 25431/mysqld tcp6 0 0 :::3306 :::* LISTEN 25431/mysqld [root@localhost opt]# ps -aux | grep mysqld mysql 25431 0.8 17.2 1776932 350232 ? SSL 16:24 0:01 /usr/sbin/mysqld ルート 25672 0.0 0.0 112828 980 ポイント/1 S+ 16:28 0:00 grep --color=auto mysqld ログインエラー パスワード ログインをスキップし、skip-grant-tables を追加して、MySQL サービスを再起動します。 [root@localhost opt]# vim /etc/my.cnf [mysqld] スキップ許可テーブル [root@localhost opt]# systemctl mysqldを再起動します [root@localhost opt]#mysql SQLを使用してルートパスワードを変更する ターミナルに入り、mysql -u root -p コマンドを入力して Enter キーを押します。パスワードを入力する必要がある場合は、Enter キーを押すだけで、パスワードなしでデータベースにログインできます。 mysql> update user set password=password("新しいパスワード") where user="root"; または、mysql> set password for 'username'@'host' = password('newpassword') mysql> 権限をフラッシュします。 mysql>終了 知らせ この手順を実行すると、「ERROR 1290 (HY000): MySQL サーバーは --skip-grant-tables オプションで実行されているため、このステートメントを実行できません」というエラーが発生します。権限のフラッシュコマンドを実行してから、このコマンドを実行します。 注意: この手順を実行すると、エラー「ERROR 1290 (HY000): MySQL サーバーは --skip-grant-tables オプションで実行されているため、このステートメントを実行できません」が表示される場合があります。権限のフラッシュコマンドを実行してから、このコマンドを実行します。 4. デフォルトのパスワードで初めてログインした後は、パスワードをリセットする必要があります。 デフォルトのパスワードを確認してください。デフォルトのパスワードは「e53xDalx.*dE」です。 [root@DB-node01 ~]# grep '一時パスワード' /var/log/mysqld.log 2019-03-06T01:53:19.897262Z 5 [注記] [MY-010454] [サーバー] root@localhost の一時パスワードが生成されました: e53xDalx.*dE [root@DB-node01 ~]# mysql -pe53xDalx.*dE ............ mysql> バージョンを選択します(); エラー 1820 (HY000): このステートメントを実行する前に、ALTER USER ステートメントを使用してパスワードをリセットする必要があります。 エラー メッセージは、初期パスワードをリセットする必要があることを示しています。次に、MySQL ログイン パスワードのリセットを開始します (MySQL データベースに切り替えて、use mysql を使用する必要があることに注意してください)。 mysql> mysql を使用します。 エラー 1820 (HY000): このステートメントを実行する前に、ALTER USER ステートメントを使用してパスワードをリセットする必要があります。 mysql> ALTER USER 'root'@'localhost' が '123456' によって識別されます。 エラー 1819 (HY000): パスワードが現在のポリシー要件を満たしていません これは実際にはvalidate_password_policyの値に関連しています。MySQL 8.0ではvalidate_password_policyに関連する設定名が変更されており、MySQL 5.7とは少し異なります。 mysql> グローバルvalidate_password.policyを0に設定します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> グローバルvalidate_password.length=1を設定します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) パスワードを変更してください mysql> ALTER USER 'root'@'localhost' が '123456' によって識別されます。 クエリは正常、影響を受けた行は 0 行 (0.05 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.03 秒) 終了し、新しいパスワードで再度mysqlにログインします。 #mysql -p123456 ........... mysql> バージョンを選択します(); +-----------+ | バージョン() | +-----------+ | 8.0.15 | +-----------+ セット内の 1 行 (0.00 秒) サービスポートを表示 mysql> 'port' のようなグローバル変数を表示します。 +---------------+-------+ | 変数名 | 値 | +---------------+-------+ | ポート | 3306 | +---------------+-------+ セット内の1行(0.01秒) MySQL接続の認証情報を表示する mysql> mysql.user からホスト、ユーザー、パスワードを選択します。 エラー 1054 (42S22): 「フィールド リスト」に不明な列「パスワード」があります 上記はMySQL 5.6以下のviewコマンドです。MySQL 5.7以降のデータベースでは、mysql.userテーブルにパスワードフィールドがありません。パスワードフィールドはauthentication_stringに変更されています。 mysql> mysql.user からホスト、ユーザー、認証文字列を選択します。 +-----------+------------------+------------------------------------------------------------------------------------+ | ホスト | ユーザー | 認証文字列 | +-----------+------------------+------------------------------------------------------------------------------------+ | localhost | mysql.infoschema | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.session | $A$005$これは無効なソルトとパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.sys | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | ローカルホスト | ルート | $A$005${7J0=4Dc7Jym8eI/FU4jimKWFvkD9XmoAkF1ca5.Un0bc6zgmPtU.0 | +-----------+------------------+------------------------------------------------------------------------------------+ セット内の 4 行 (0.00 秒) mysql8.0 ユーザーパスワード変更コマンド mysql> mysql を使用します。 mysql> ALTER USER 'root'@'localhost' が '123456' によって識別されます。 mysql> 権限をフラッシュします。 MySQL 8.0 のインストール (バイナリ モード) 1. まず、システムのデフォルトまたは以前にインストールされていた可能性のある他のバージョンの MySQL を削除します。 [root@mysql8-node ~]# for i in $(rpm -qa|grep mysql);do rpm -e $i --nodeps;done [root@mysql8-node ~]# rm -rf /var/lib/mysql && rm -rf /etc/my.cnf 2. 必要なソフトウェアパッケージをインストールする [root@mysql8-node ~]# yum -y libaio をインストールします [root@mysql8-node ~]# yum -y インストール net-tools 3. MySQL 8.0.12をダウンロードしてインストールする [root@mysql8-node ~]# グループ追加 mysql [root@mysql8-node ~]# useradd -g mysql mysql [root@mysql8-node ~]# cd /usr/local/src/ [root@mysql-node src]# ll -rw-r--r-- 1 ルート ルート 620389228 2018年8月22日 mysql8.0.12_bin_centos7.tar.gz [root@mysql-node src]# tar -zvxf mysql8.0.12_bin_centos7.tar.gz [root@mysql-node src]# mv mysql /usr/local/ [root@mysql-node src]# chown -R mysql.mysql /usr/local/mysql [root@mysql-node src]# vim /home/mysql/.bash_profile エクスポート PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH [root@mysql-node src]# ソース /home/mysql/.bash_profile [root@mysql-node src]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile [root@mysql-node src]# ソース /etc/profile 4. データディレクトリを作成する [root@mysql-node src]# mkdir -p /data/mysql/{data,log,binlog,conf,tmp} [root@mysql-node src]# chown -R mysql.mysql /data/mysql 5. MySQLを設定する [root@mysql-node src]# su - mysql [mysql@mysql-node ~]$ vim /data/mysql/conf/my.cnf [mysqld] 小文字のテーブル名 = 1 ユーザー = mysql サーバーID = 1 ポート = 3306 デフォルトのタイムゾーン = '+08:00' 強制GTID一貫性 = オン gtid_mode = オン binlog_checksum = なし デフォルト認証プラグイン = mysql_native_password データディレクトリ = /data/mysql/data pid ファイル = /data/mysql/tmp/mysqld.pid ソケット = /data/mysql/tmp/mysqld.sock tmpdir = /data/mysql/tmp/ 名前解決をスキップ = ON オープンファイル制限 = 65535 テーブルオープンキャッシュ = 2000 ####################innodb############################ innodb_data_home_dir = /data/mysql/data innodb_data_file_path = ibdata1:512M;ibdata2:512M:自動拡張 innodb_buffer_pool_size = 12000M innodb_flush_log_at_trx_commit = 1 innodb_io_capacity = 600 innodb_lock_wait_timeout = 120 innodb_log_buffer_size = 8M innodb_log_file_size = 200M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 85 innodb_read_io_threads = 8 innodb_write_io_threads = 8 innodb_thread_concurrency = 32 innodb_file_per_table innodb_rollback_on_timeout innodb_undo_directory = /data/mysql/data innodb_log_group_home_dir = /data/mysql/data ####################セッション############################ 結合バッファサイズ = 8M キーバッファサイズ = 256M バルク挿入バッファサイズ = 8M 最大ヒープテーブルサイズ = 96M tmp_table_size = 96M 読み取りバッファサイズ = 8M ソートバッファサイズ = 2M 最大許容パケット = 64M 読み取りバッファサイズ = 32M ##############ログセット################## ログエラー = /data/mysql/log/mysqld.err ログ bin = /data/mysql/binlog/binlog log_bin_index = /data/mysql/binlog/binlog.index 最大バイナリログサイズ = 500M slow_query_log_file = /data/mysql/log/slow.log 遅いクエリログ = 1 長いクエリ時間 = 10 log_queries_not_using_indexes = オン ログスロットルクエリがインデックスを使用していない = 10 log_slow_admin_statements = オン log_output = ファイル、テーブル マスター情報ファイル = /data/mysql/binlog/master.info 6. 初期化 (ちょっと待ってください。/data/mysql/log/mysqld.err で初期化プロセスをチェックして、エラー情報があるかどうかを確認できます) [mysql@mysql-node ~]$ mysqld --defaults-file=/data/mysql/conf/my.cnf --initialize-insecure --user=mysql 7. mysqldを起動する [mysql@mysql-node ~]$ mysqld_safe --defaults-file=/data/mysql/conf/my.cnf & [mysql@mysql-node ~]$ lsof -i:3306 コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名 mysqld 24743 mysql 23u IPv6 23132988 0t0 TCP *:mysql (LISTEN) 8. mysqlにログインしてパスワードをリセットする 初めて sock ファイルを使用してローカルで mysql にログインする場合は、パスワードは必要ありません [mysql@mysql-node ~]# mysql -S /data/mysql/tmp/mysqld.sock ............. mysql> ALTER USER 'root'@'localhost' が '123456' によって識別されます。 クエリは正常、影響を受けた行は 0 行 (0.07 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.03 秒) mysql> mysql.user からホスト、ユーザー、認証文字列を選択します。 +-----------+------------------+------------------------------------------------------------------------------------+ | ホスト | ユーザー | 認証文字列 | +-----------+------------------+------------------------------------------------------------------------------------+ | localhost | mysql.infoschema | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.session | $A$005$これは無効なソルトとパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.sys | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | ローカルホスト | ルート | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +-----------+------------------+------------------------------------------------------------------------------------+ セット内の 4 行 (0.00 秒) 終了。パスワードをリセットすると、sock ファイルを使用してパスワードなしでログインできなくなります。 [root@mysql-node ~]# mysql -S /data/mysql/tmp/mysqld.sock エラー 1045 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワード使用: NO) [root@mysql-node ~]# mysql -p123456 mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。 エラー 2002 (HY000): ソケット '/tmp/mysql.sock' 経由でローカル MySQL サーバーに接続できません (2) ソックファイルへのソフトリンクを作成する [root@mysql-node ~]# ln -s /data/mysql/tmp/mysqld.sock /tmp/mysql.sock ログイン [root@mysql-node ~]# mysql -p123456 または [root@mysql-node ~]# mysql -uroot -S /data/mysql/tmp/mysqld.sock -p123456 ............. mysql> バージョンを選択します(); +-----------+ | バージョン() | +-----------+ | 8.0.12 | +-----------+ セット内の 1 行 (0.00 秒) #ユーザー権限を付与します。権限を付与する前にユーザーを作成する必要があります。 (ユーザーを作成するときは、@ を含めてアドレスを指定する必要があります。許可権限の付与先アドレスは、この @ の後に指定したアドレスです。そうしないと、許可権限の付与でエラーが報告されます。) mysql> 'kevin'@'%' を作成し、'123456' で識別します。 クエリは正常、影響を受けた行は 0 行 (0.11 秒) mysql> grant オプションを使用して、*.* のすべての権限を 'kevin'@'%' に付与します。 クエリは正常、影響を受けた行は 0 行 (0.21 秒) mysql> mysql.user からホスト、ユーザー、認証文字列を選択します。 +-----------+------------------+------------------------------------------------------------------------------------+ | ホスト | ユーザー | 認証文字列 | +-----------+------------------+------------------------------------------------------------------------------------+ | % | ケビン | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | localhost | mysql.infoschema | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.session | $A$005$これは無効なソルトとパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.sys | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | ローカルホスト | ルート | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +-----------+------------------+------------------------------------------------------------------------------------+ セット内の行数は 5 です (0.00 秒) mysql> mysql.user を更新し、host='172.16.60.%' を設定し、user="kevin" とします。 クエリは正常、1 行が影響を受けました (0.16 秒) 一致した行: 1 変更された行: 1 警告: 0 mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.05 秒) mysql> mysql.user からホスト、ユーザー、認証文字列を選択します。 +-------------+-----------------+------------------------------------------------------------------------------------+ | ホスト | ユーザー | 認証文字列 | +-------------+-----------------+------------------------------------------------------------------------------------+ | 172.16.60.% | ケビン | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | localhost | mysql.infoschema | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.session | $A$005$これは無効なソルトとパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.sys | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | ローカルホスト | ルート | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +-------------+-----------------+------------------------------------------------------------------------------------+ セット内の行数は 5 です (0.00 秒) mysql> '123456' で識別される 'bobo'@'172.16.60.%' のユーザーを作成します。 クエリは正常、影響を受けた行は 0 行 (0.09 秒) mysql> *.* のすべての権限を 'bobo'@'172.16.60.%' に付与します。 クエリは正常、影響を受けた行は 0 行 (0.17 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.04 秒) mysql> mysql.user からホスト、ユーザー、認証文字列を選択します。 +-------------+-----------------+------------------------------------------------------------------------------------+ | ホスト | ユーザー | 認証文字列 | +-------------+-----------------+------------------------------------------------------------------------------------+ | 172.16.60.% | ボボ | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | 172.16.60.% | ケビン | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | localhost | mysql.infoschema | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.session | $A$005$これは無効なソルトとパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.sys | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | ローカルホスト | ルート | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +-------------+-----------------+------------------------------------------------------------------------------------+ セット内の 6 行 (0.00 秒) mysql> kevin@'172.16.60.%' の権限を表示します。 +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | [email protected].% への助成金 | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | GRANT OPTION を使用して、SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、RELOAD、SHUTDOWN、PROCESS、FILE、REFERENCES、INDEX、ALTER、SHOW DATABASES、SUPER、CREATE TEMPORARY TABLES、LOCK TABLES、EXECUTE、REPLICATION SLAVE、REPLICATION CLIENT、CREATE VIEW、SHOW VIEW、CREATE ROUTINE、ALTER ROUTINE、CREATE USER、EVENT、TRIGGER、CREATE TABLESPACE、CREATE ROLE、DROP ROLE ON *.* を `kevin`@`172.16.60.%` に付与します | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ セット内の 1 行 (0.00 秒) MySQL 単一マシンのマルチインスタンスのインストールと構成 上記のバイナリ デプロイメントから、ポート 3306 の MySQL インスタンスが起動されていることがわかります。次に、さらに 2 つのインスタンス (3307 と 3308) を起動する必要があります。操作は次のとおりです。 インスタンスデータディレクトリを作成する [root@mysql-node ~]# mkdir -p /data/mysql3307/{data,log,binlog,conf,tmp} [root@mysql-node ~]# mkdir -p /data/mysql3308/{data,log,binlog,conf,tmp} [root@mysql-node ~]# chown -R mysql.mysql /data/mysql3307 [root@mysql-node ~]# chown -R mysql.mysql /data/mysql3308 MySQLの設定 [root@mysql-node ~]# cp -r /data/mysql/conf/my.cnf /data/mysql3307/conf/ [root@mysql-node ~]# cp -r /data/mysql/conf/my.cnf /data/mysql3308/conf/ [root@mysql-node ~]# sed -i 's#/data/mysql/#/data/mysql3307/#g' /data/mysql3307/conf/my.cnf [root@mysql-node ~]# sed -i 's#/data/mysql/#/data/mysql3308/#g' /data/mysql3308/conf/my.cnf [root@mysql-node ~]# sed -i 's/3306/3307/g' /data/mysql3307/conf/my.cnf [root@mysql-node ~]# sed -i 's/3306/3308/g' /data/mysql3308/conf/my.cnf [root@mysql-node ~]# chown -R mysql.mysql /data/mysql* 2つのインスタンスを初期化する [root@mysql-node ~]# mysqld --defaults-file=/data/mysql3307/conf/my.cnf --initialize-insecure --user=mysql [root@mysql-node ~]# mysqld --defaults-file=/data/mysql3308/conf/my.cnf --initialize-insecure --user=mysql 次にmysqldを起動します [root@mysql-node ~]# mysqld_safe --defaults-file=/data/mysql3307/conf/my.cnf & [root@mysql-node ~]# mysqld_safe --defaults-file=/data/mysql3308/conf/my.cnf & 起動が成功したかどうかを確認する [root@mysql-node ~]# ps -ef|grep mysql mysql 23996 1 0 14:37 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/my.cnf mysql 24743 23996 0 14:38 ? 00:00:17 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/data/mysql/log/mysqld.err --open-files-limit=65535 --pid-file=/data/mysql/tmp/mysqld.pid --socket=/data/mysql/tmp/mysqld.sock --port=3306 ルート 30473 23727 0 15:33 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql3307/conf/my.cnf mysql 31191 30473 17 15:33 pts/0 00:00:02 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql3307/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql3307/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql3307/log/mysqld.err --open-files-limit=65535 --pid-file=/data/mysql3307/tmp/mysqld.pid --socket=/data/mysql3307/tmp/mysqld.sock --port=3307 ルート 31254 23727 0 15:33 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql3308/conf/my.cnf mysql 31977 31254 39 15:33 pts/0 00:00:02 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql3308/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql3308/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql3308/log/mysqld.err --open-files-limit=65535 --pid-file=/data/mysql3308/tmp/mysqld.pid --socket=/data/mysql3308/tmp/mysqld.sock --port=3308 ルート 32044 23727 0 15:34 pts/0 00:00:00 grep --color=auto mysql [root@mysql-node ~]# lsof -i:3307 コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名 mysqld 31191 mysql 22u IPv6 23144844 0t0 TCP *:opsession-prxy (LISTEN) [root@mysql-node ~]# lsof -i:3308 コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名 mysqld 31977 mysql 22u IPv6 23145727 0t0 TCP *:tns-server (LISTEN) [root@mysql-node ~]# lsof -i:3306 コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名 mysqld 24743 mysql 23u IPv6 23132988 0t0 TCP *:mysql (LISTEN) 3307ポートインスタンスにログインし、パスワードを設定します [root@mysql-node ~]# mysql -S /data/mysql3307/tmp/mysqld.sock ............ mysql> ALTER USER 'root'@'localhost' が '123456' によって識別されます。 クエリは正常、影響を受けた行は 0 行 (0.11 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.11 秒) ログアウトして、新しいパスワードでログインしてください [root@mysql-node ~]# mysql -uroot -S /data/mysql3307/tmp/mysqld.sock -p123456 ............. マイSQL> 同様に、3308ポートインスタンスにログインしてパスワードを設定します。 [root@mysql-node ~]# mysql -S /data/mysql3308/tmp/mysqld.sock ........... mysql> ALTER USER 'root'@'localhost' が '123456' によって識別されます。 クエリは正常、影響を受けた行は 0 行 (0.13 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.03 秒) ログアウトして、新しいパスワードでログインしてください [root@mysql-node ~]# mysql -uroot -S /data/mysql3308/tmp/mysqld.sock -p123456 ................. マイSQL> 3 つのポート インスタンス 3306、3307、および 3308 の起動コマンドは次のとおりです。 mysqld_safe --defaults-file=/data/mysql/conf/my.cnf & mysqld_safe --defaults-file=/data/mysql3307/conf/my.cnf & mysqld_safe --defaults-file=/data/mysql3308/conf/my.cnf & ログインコマンドは次のとおりです。 mysql -uroot -S /data/mysql/tmp/mysqld.sock -p123456 mysql -uroot -S /data/mysql3307/tmp/mysqld.sock -p123456 mysql -uroot -S /data/mysql3308/tmp/mysqld.sock -p123456 ただし、繰り返しインストールの問題を解決するために、マルチインスタンスのインストール方法はスクリプトに特別に編集されています。必要な読者は、この公式アカウントのバックグラウンドでMySQL8に直接返信して、マルチインスタンスのインストールスクリプトを入手できます。 MySQL 8.0 の使用時に遭遇するいくつかの落とし穴 1) MySQL 8.0 では、ユーザーの作成と認証が以前とは異なります。厳密に言えば、異なるとは言えませんが、より厳格になったとしか言えません。MySQL 8.0 では、認証を行う前に、ユーザーを作成し (ユーザー作成時に @ を使用してアドレスを指定すると、この @! の後に指定したアドレスが認可の付与先アドレスになります。そうしないと、認可の付与でエラーが報告されます!)、パスワードを設定する必要があります。 mysql> 'kevin'@'%' を作成し、'123456' で識別します。 クエリは正常、影響を受けた行は 0 行 (0.04 秒) mysql> grant オプションを使用して、*.* のすべての権限を 'kevin'@'%' に付与します。 クエリは正常、影響を受けた行は 0 行 (0.04 秒) mysql> '123456' で識別されるユーザー 'bobo'@'%' を作成します。 クエリは正常、影響を受けた行は 0 行 (0.06 秒) mysql> grant オプションを使用して、*.* のすべての権限を 'bobo'@'%' に付与します。 クエリは正常、影響を受けた行は 0 行 (0.03 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.04 秒) mysql> mysql.user からホスト、ユーザー、認証文字列を選択します。 +-----------+------------------+------------------------------------------------------------------------------------+ | ホスト | ユーザー | 認証文字列 | +-----------+------------------+------------------------------------------------------------------------------------+ | % | ボボ | $A$005$1VY")q?G6<^X@-6LsXrPt5C0TwlTuvHbaOa3sYF0DKViIGoRPuCF8AzwiFcim1 | | % | ケビン | $A$005$hy`U}ZB#R::rA8W0y2rmwgySqzv0rmR1eTeNDSaXfQPWIsrh7ytbVdi85 | | localhost | mysql.infoschema | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.session | $A$005$これは無効なソルトとパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.sys | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | ローカルホスト | ルート | $A$005$/VO_y^7,]6;2qxggBLmJzhA0Qylu5/AHuRScZ/ykKedgZKh/6krOIzPs2 | +-----------+------------------+------------------------------------------------------------------------------------+ MySQL 5.7 以前のバージョンの直接認証方式を引き続き使用すると、次のエラーが発生します。 mysql> '123456' で識別される 'shibo'@'%' に *.* のすべての権限を付与します。 エラー 1064 (42000): SQL 構文にエラーがあります。1 行目の 'identified by '123456'' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 2) デフォルトでは、Mysql8.0 はリモート ログインに root アカウントを使用できません。root アカウントはローカルにのみログインできます。 mysql> mysql.user からホスト、ユーザー、認証文字列を選択します。 +-----------+------------------+------------------------------------------------------------------------------------+ | ホスト | ユーザー | 認証文字列 | +-----------+------------------+------------------------------------------------------------------------------------+ | % | ボボ | $A$005$1VY")q?G6<^X@-6LsXrPt5C0TwlTuvHbaOa3sYF0DKViIGoRPuCF8AzwiFcim1 | | % | ケビン | $A$005$hy`U}ZB#R::rA8W0y2rmwgySqzv0rmR1eTeNDSaXfQPWIsrh7ytbVdi85 | | localhost | mysql.infoschema | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.session | $A$005$これは無効なソルトとパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.sys | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | ローカルホスト | ルート | $A$005$/VO_y^7,]6;2qxggBLmJzhA0Qylu5/AHuRScZ/ykKedgZKh/6krOIzPs2 | +-----------+------------------+------------------------------------------------------------------------------------+ セット内の 6 行 (0.00 秒) リモートでログインする場合は、root アカウントの権限を更新する必要があります。 mysql> mysql.user を更新し、host='%' を設定し、user="root" にします。 クエリは正常、1 行が影響を受けました (0.10 秒) 一致した行: 1 変更された行: 1 警告: 0 mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.14 秒) mysql> mysql.user からホスト、ユーザー、認証文字列を選択します。 +-----------+------------------+------------------------------------------------------------------------------------+ | ホスト | ユーザー | 認証文字列 | +-----------+------------------+------------------------------------------------------------------------------------+ | % | ボボ | $A$005$1VY")q?G6<^X@-6LsXrPt5C0TwlTuvHbaOa3sYF0DKViIGoRPuCF8AzwiFcim1 | | % | ケビン | $A$005$hy`U}ZB#R::rA8W0y2rmwgySqzv0rmR1eTeNDSaXfQPWIsrh7ytbVdi85 | | % | ルート | $A$005$/VO_y^7,]6;2qxggBLmJzhA0Qylu5/AHuRScZ/ykKedgZKh/6krOIzPs2 | | localhost | mysql.infoschema | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.session | $A$005$これは無効なソルトとパスワードの組み合わせであり、決して使用してはいけません | | localhost | mysql.sys | $A$005$これは無効な SALT とパスワードの組み合わせであり、決して使用してはいけません | +-----------+------------------+------------------------------------------------------------------------------------+ セット内の 6 行 (0.00 秒) この方法では、ルートアカウントを使用してmysql8.0データベースにリモートでログインできます。 ルート アカウントの権限を変更し、ルート アカウントがリモートでログインできるようにした後、Navicat を使用してリモートで mysql に接続すると、ポップアップ ウィンドウ エラーが表示されます。 その理由は、MySQL 8 より前のバージョンでは暗号化ルールが mysql_native_password であり、MySQL 8 以降では暗号化ルールが caching_sha2_password であるためです。この問題を解決するには、次の 2 つの方法があります。 1. 1つは、Navicat ドライバーをアップグレードすることです。 2. 1 つは、mysql ユーザーのログイン パスワードの暗号化ルールを mysql_native_password に復元することです。ここでは、解決するために 2 番目の方法を選択します。 #暗号化ルールを変更するmysql> ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; クエリは正常、影響を受けた行は 0 行 (0.16 秒) # ユーザーのパスワードを更新しますmysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; クエリは正常、影響を受けた行は 0 行 (0.08 秒) #権限を更新mysql> FLUSH PRIVILEGES; クエリは正常、影響を受けた行は 0 行 (0.03 秒) これで問題は解決します。 1. sqlyog を使用してリンクすると、例外 2058 が発生します。このとき、mysql を変更する必要があります。コマンドラインから mysql にログインし (パスワードを変更する場合のログインと同じで、変更したパスワードを使用します)、次のコマンドを実行します: mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; ここで、password は変更したパスワードです。その後、SQLyog で再接続すると、接続が成功します。 2. エラー メッセージが「ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'」の場合、次のコマンドを使用します: mysql > ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; デフォルトのエンコード方式を変更します。mysql8.0 のデフォルトのエンコード方式は utf8mb4 なので、使用時に変更する必要はありません。次のコマンドを使用して表示できます。 mysql > SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%'; utf8mb4 などの他のエンコード方式を変更する必要がある場合は、次の方法を使用できます。 MySQL 構成ファイル my.cnf を変更します。見つけたら、次の 3 つの部分に次の内容を追加してください。 [クライアント] デフォルトの文字セット = utf8mb4 [mysql] デフォルトの文字セット = utf8mb4 [mysqld] 文字セットクライアントハンドシェイク = FALSE 文字セットサーバー = utf8mb4 照合サーバー = utf8mb4_unicode_ci init_connect = '名前をutf8mb4に設定' 次に、mysqld サービスを再起動します。 character_set_client (クライアント ソース データで使用される文字セット) character_set_connection (接続レベルの文字セット) character_set_database (現在選択されているデータベースのデフォルトの文字セット) character_set_results (クエリ結果の文字セット) character_set_server (内部操作のデフォルトの文字セット) データベース接続パラメータ: characterEncoding=utf8 は自動的に utf8mb4 として認識されます。このパラメータを省略して自動検出することもできます。 また、autoReconnect=true は必須です。 6) いくつかのパラメータ設定クエリコマンド #MySQL での最大接続数を照会します。mysql> show global variables like 'max_conn%'; mysql> SELECT @@MAX_CONNECTIONS AS '最大接続数'; # 最大接続数を表示します。mysql> show global status like 'Max_used_connections'; # スロークエリログが有効になっているかどうか、およびログの場所を確認します。mysql> show variables like 'slow_query%'; # 遅いクエリのタイムアウト記録を表示します。logmysql> show variables like 'long_query_time'; # 作成され現在接続されているリンクの数を表示します。mysql> show status like 'Threads%'; # 現在のデータベース接続を表示します。mysql> show processlist; # データベース構成を表示mysql> show variables like '%quer%'; 参考リンク: 出典: https://www.cnblogs.com/kevingrace/p/10482469.html CentOS での MySQL 8.0 のインストールとデプロイメント: https://mp.weixin.qq.com/s/OQaL0T-jT2xfsJBulau7sQ https://blog.csdn.net/vv19910825/article/details/82979563 CentOS8 で MySQL 8.0 をインストールしてデプロイする方法についての記事はこれで終わりです。MySQL のインストールとデプロイに関するより詳しい内容については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Vueプロジェクトでコンポーネントをカプセル化する簡単な手順
>>: Nginx+SpringBoot による負荷分散の実装例
実際の開発では、MySQL の主キーは重複できず、主キーが自動的にインクリメントされることがあります...
目次概要1. 入力および出力プロパティの概要2. 入力属性3. プロパティバインディングは親コンポー...
<div id="ルート"> <h2>頑張れ、{{na...
更新: 最近、サーバーがマイニング ウイルスによってハッキングされたことが判明しました。これは、おそ...
これは新しいバージョンではもう不可能なようで、推奨されません。そうでない場合は、ソフト リンクを直接...
1例: 図1のフィールドを図2に分割するには アカウントIDを選択、 サブストリングインデックス(サ...
サービス.xml Server.xml 構成ファイルは、コンテナー全体を構成するために使用されます。...
実施効果: 1. count(1) と count(*)テーブル内のデータ量が多い場合、テーブルを分...
序文フロントエンド開発では、目的のコンテンツを取得するためにループをトラバースする必要がある状況に頻...
要件は次のとおりです。ドメイン名の下に複数のサーバーがあります。現在、特定の地域をテストしています。...
目次MySQL 複数インスタンスマルチインスタンスの概要マルチインスタンスとは何ですか?複数のインス...
<br /> 英語原文: http://desktoppub.about.com/od/...
Web ページの読み込み速度は、Web サイトの品質を評価するための重要な指標です。その理由は、ほと...
MySQL スロー クエリ ログは、問題のあるクエリを追跡するのに非常に役立ちます。現在のプログラム...
まとめインタビュー中、MySQL インデックスの問題について議論しているときに、B+ ツリー、B ツ...