GNU/Linux >> Linux の 問題 >  >> Debian

MySQL8をDebian10にインストールする方法

MySQLは、Windows、Linux、macOS、FreeBSDなどの多くのオペレーティングシステムで動作するオープンソースのリレーショナルデータベースシステムです。これはおそらく最も人気のあるOpenSourceRDBMSであり、LAMPおよびLEMPスタックの中心的なコンポーネントです。 WordPress、Joomla、TYPO3、phpBBなどの多くのアプリケーションがMySQLに依存しています。

MySQL 8には、JSONサポート、トランザクションデータディクショナリ、永続的なランタイム構成、ドキュメントストア、オプティマイザーヒント、SQLロール、CTE、ウィンドウ関数、非表示インデックスなど、いくつかの新機能が追加されました。

何を学びますか?

このチュートリアルでは、MySQLサーバーに関連するいくつかのことを学びます。以下は、以下についての詳細です。

  • MySQLServer8をDebianBuster10にインストールします
  • MySQLルートパスワードを設定する
  • 安全なMySQLサーバーの展開(バインドアドレス、ポートなどの変更)
  • SSLを設定してMySQLサーバーのリモート接続を有効にする
  • phpMyAdminのインストールと構成
  • ユーザー、データベースなどを作成するための基本的なMySQLクエリ
  • 自動バックアップMySQLデータベースを設定する

前提条件

このガイドでは、2GBのRAMと4つのCPUを搭載した最新のDebianBuster10にMySQLServer8.04をインストールします。また、パッケージのインストールとシステム構成の編集にはroot権限が必要です。

ステップ1-MySQLリポジトリを追加する

このチュートリアルでは、公式のMySQLリポジトリからMySQLServer8をインストールします。そのためには、公式のMySQLリポジトリをDebianサーバーに追加する必要があります。

MySQLリポジトリを追加する前に、以下のaptコマンドを使用して「GnuPG」パッケージをインストールしてください。

sudo apt install gnupg -y

すべてのインストールが完了したら、MySQL APTリポジトリをダウンロードして、システムに追加します。

wget -q http://repo.mysql.com/mysql-apt-config_0.8.15-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb

リポジトリをデフォルトのままにして、「 OK」を選択します '。

そして、公式のMySQLリポジトリが追加されました。

次に、次のコマンドを使用して、Debianシステムで利用可能なすべてのリポジトリを更新します。

sudo apt update

そして、以下のリストにある公式のMySQLリポジトリを取得します。

ご覧のとおり、公式のMySQLリポジトリが追加され、MySQLServer8.0をDebianBuster10にインストールする準備が整いました。

ステップ2-MySQLサーバーをインストールする

MySQL Server 8.0をDebianシステムにインストールするには、以下のaptコマンドを実行します。

sudo apt install mysql-server

次に、MySQLインストールのrootパスワードを入力し、「 OK」を選択します。 '。

MySQLrootユーザーのパスワードを繰り返します。

その後、MySQLのデフォルト認証プラグインを構成するように求められます。 '強力なパスワード暗号化を選択します '推奨どおりに'OKを選択します '。

これで、MySQLServer8.0のインストールが完了しました。

次に、次のコマンドを使用してMySQLサービスを確認します。

systemctl is-enabled mysql
systemctl status mysql

以下は、得られる結果です。

その結果、MySQLサービスはDebianサーバー上で稼働しています。このサービスは、システムが起動するたびに自動的に実行されます。

ステップ3-mysql_secure_passwordを使用してMySQLデプロイメントを保護する

このステップでは、「 mysql_secure_installation 」を使用して、MySQLサーバーのインストールのセキュリティを向上させます。 'コマンドラインツール。

' mysql_secure_installation 'ツールは、パスワード強度の設定、リモートアクセスの無効化、デフォルトの匿名ユーザーとテストデータベースの削除など、さまざまな側面からMySQLの展開を改善するのに役立ちます。

次に、' mysql_secure_installationを実行します。 'シェルのコマンド。

mysql_secure_installation

MySQLのインストールの開始時に、MySQLのrootパスワードをすでに設定しています。次に、パスワードを入力してプロセスを続行します。

Enter the password for user root: TYPE YOUR MYSQL ROOT PASSWORD

その後、「 Y」と入力します ' VALIDATE PASSWORDを構成します 'コンポーネント。

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of the password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

次に、すべてのユーザーのパスワード検証ポリシーレベルを選択します。 ' 2と入力します ' STRONGを設定します 'パスワードレベルポリシー。

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters, and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.
>

これで、「mysql_secure_installation」コマンドが現在のパスワード強度をチェックします。ご覧のとおり、現在のパスワードの強度は' 50です。 '。ここで「Y」と入力します '現在のパスワードを新しいより強力なパスワードに変更します。

Estimated strength of the password: 50 
Change the password for root? ((Press y|Y for Yes, any other key for No) : Y

次に、強力なパスワードを入力し、スコアが 100であることを確認します。 、次に「 Y」と入力します '新しいパスワードで続行します。

New password: 

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided? (Press y|Y for Yes, any other key for No) : Y

その結果、MySQLコンポーネント「VALIDATEPASSWORD」は強力なパスワードポリシーで構成され、新しいMySQLパスワードが作成されました。

次に、デフォルトの匿名ユーザーを削除するように求められます。 ' Yと入力します 'インストールのデフォルトの匿名ユーザーを削除します。

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without creating a user account. This is intended only for testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y

次に、「 Y」と入力します '再度、MySQLリモートログインを無効にし、MySQLサーバーにローカルでのみアクセスできるようにする場合。

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y

その後、MySQLサーバーからデフォルトのデータベース「test」を削除します。 ' Yと入力します 'そしてEnterキーを押して続行します。

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y

次に、'Y'と入力します 特権テーブルを再ロードします。事実上、新しいMySQL構成の変更が適用されています。

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

その結果、te'mysql_secure_installation'スクリプトを使用したSecureMySQLServerの展開が完了しました。この段階で、レベル「2」の強力なパスワードポリシーを使用して「VALIDATEPASSWORD」コンポーネントを有効にし、MySQLの新しい強力なルートパスワードも構成しました。

ステップ4-追加の構成を使用してMySQLサーバーを保護する

このチュートリアルでは、MySQLサーバーのデプロイメントを改善するための構成を追加します。 MySQLサーバーのバインドアドレスを指定し、デフォルトポートを変更し、データファイルの読み込みを無効にして、すべてのMySQLユーザーのパスワード有効期限ポリシーを設定します。

次に、「/ etc / mysql / conf.d /」ディレクトリに移動し、vimエディターを使用して新しい構成「mysqld.cnf」を作成します。

cd /etc/mysql/conf.d/
vim mysqld.cnf

次の構成を貼り付けます。

[mysqld]

# MySQL running on 127.0.0.1 with port 8320
bind-address=127.0.0.1
port=8320

# Disable LOAD DATA LOCA
local-infile=0

# Password Expiration to 60 Days
default_password_lifetime=60

# MySQLX Plugin running on 127.0.0.1 with port 8321
mysqlx_bind_address=127.0.0.1
mysqlx_port=8321

保存して閉じます。

次に、MySQLサービスを再起動し、次のコマンドを使用してシステムで開いているポートを確認します。

systemctl restart mysql
ss -plnt

以下は、得られる結果です。

ご覧のとおり、MySQLサーバーは、デフォルト以外のTCPポート「8320」のローカルIPアドレス「127.0.0.1」で稼働しています。

次に、カスタムポートを使用してMySQLシェルにログインするには、以下のように「-Pポート」オプションを指定して「mysql」コマンドを使用できます。

mysql -u root -P 8320 -p

MySQLサーバーのルートパスワードを入力します。

ログインしたら、次のクエリを実行してMySQLサーバーのポート構成を確認します。

show variables like 'port';

そして、MySQLサーバーが以下のようにカスタムポート「8320」で実行されていることがわかります。

その結果、カスタムTCPポート「8320」を使用してローカルIPアドレス「127.0.0.1」で実行されるようにMySQLサーバーを構成しました。

ステップ5-SSLを使用してMySQLリモート接続を保護して有効にする

MySQLサーバーを内部ネットワークにデプロイし、同じネットワーク上の他のホストがMySQLサーバー上のデータベースにアクセスできるようにするとします。その場合は、MySQLサーバーのデプロイメントでSSLを有効にすることをお勧めします。

このステップでは、MySQLサーバーでSSLとリモートアクセスを設定して有効にする方法を学習します。

SSL証明書を生成する

デフォルトでは、MySQLServer8.0はインストール中にSSL証明書を自動的に生成します。すべてのデフォルトSSL証明書は、「/ var / lib/mysql」ディレクトリにあります。

このステップでは、' mysql_ssl_rsa_setup を使用して、MySQLサーバーの新しいSSL証明書を生成します。 'コマンドラインツール。

次に、新しいSSLディレクトリ「/ etc / mysql / certs」を作成し、そのディレクトリの所有権をユーザー「mysql」に変更します。

mkdir -p /etc/mysql/certs/
sudo chown -R mysql:mysql /etc/mysql/certs

次に、次のコマンドを使用して、MySQLサーバーの新しいSSL証明書を生成します。また、必ず'-suffix =STRINGを変更してください。 'あなたの一般名で。

sudo mysql_ssl_rsa_setup --suffix=HakasMySQLSrv --uid=mysql --datadir=/etc/mysql/certs/

完了すると、MySQLサーバーの新しいSSL証明書が「/ etc / mysql/certs」ディレクトリに生成されます。

次のコマンドを使用してSSL証明書を確認します。

ls -lah /etc/mysql/certs/
openssl verify -CAfile /etc/mysql/certs/ca.pem /etc/mysql/certs/server-cert.pem /etc/mysql/certs/client-cert.pem

以下は、得られる結果です。

MySQLサーバーの新しいSSL証明書が「/etc/ mysql /certs/」ディレクトリに生成されました。

SSLとリモートアクセスMySQLサーバーを有効にする

MySQLサーバーでSSLとリモートアクセスを有効にするには、「bind-address」オプションを内部ネットワークのIPアドレスに変更し、MySQLのSSL構成を追加する必要があります。

次に、「/ etc / mysql / conf.d /」ディレクトリに移動し、vimエディターを使用して「mysqld.cnf」の上に作成した構成を編集します。

cd /etc/mysql/conf.d/
vim mysqld.cnf

'bind-address'を以下のように内部IPアドレスに変更します。

bind-address=172.16.0.3

次に、以下のMySQLサーバーのSSL構成を追加し、SSLパスを独自のものに変更します。

ssl-ca=/etc/mysql/certs/ca.pem
ssl-cert=/etc/mysql/certs/server-cert.pem
ssl-key=/etc/mysql/certs/server-key.pem

さらに、すべてのクライアントのTLSバージョンを指定し、次の構成を使用して安全なSSL接続のみを使用するように強制することができます。

#require_secure_transport=ON
tls_version=TLSv1.1,TLSv1.2

保存して閉じます。

次に、MySQLサービスを再起動して新しい構成を適用し、次のコマンドを使用してMySQLサーバーのIPアドレスを確認します。

systemctl restart mysql
ss -plnt

そして、SSLが有効になっている内部ネットワークIPアドレスでMySQLサーバーが稼働していることを確認します。

クライアントのセットアップとSSL接続のテスト

別のホスト/クライアントからMySQLサーバーに接続するには、新しいMySQLユーザーを作成し、クライアント証明書をコピーして、クライアントのMySQL構成を追加する必要があります。

次のコマンドを使用してMySQLシェルにログインします。

mysql -u root -P 8320 -p

次に、次のクエリを使用して、リモート接続用の新しいMySQLユーザーを作成します。

CREATE USER 'remoteuser'@'%' IDENTIFIED WITH mysql_native_password BY 'MyRemoteUserPasswordMySQL39==' REQUIRE SSL;
GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

' exitと入力します 'MySQLシェルからログアウトします。

次に、以下のようにSCPコマンドを使用して、CAとクライアントの証明書とキーをクライアントマシンにコピーする必要があります。

scp /etc/mysql/certs/ca.pem [email protected]:/certificates/directory/
scp /etc/mysql/certs/client-cert.pem [email protected]:/certificates/directory/
scp /etc/mysql/certs/client-key.pem [email protected]:/certificates/directory/

その後、クライアントマシンに接続し、vimエディターを使用して新しい構成を作成します。

vim ~/.my.cnf

以下のようにMySQLクライアント構成を貼り付け、クライアントSSL証明書パスを独自のパスに変更します。

[client]
ssl-ca=/home/gpk/certs/ca.pem
ssl-cert=/home/gpk/certs/client-cert.pem
ssl-key=/home/gpk/certs/client-key.pem

保存して閉じます。

カスタムポートを使用してリモートMySQLサーバーに接続するには、以下の「mysql」コマンドを実行します。

mysql -u remoteuser -h 172.16.0.3 -P 8320 -p

ログインしたら、次のクエリを使用して接続ステータスを確認します。

STATUS
SELECT * FROM performance_schema.session_status
       WHERE VARIABLE_NAME IN ('Ssl_version','Ssl_cipher');

以下は、得られる結果です。

ご覧のとおり、MySQLサーバーへのSSLセキュア接続TLSv1.2でログインしています。

その結果、MySQLサーバーの安全なSSL接続によるリモートアクセスが有効になりました。

ステップ6-phpMyAdminをインストールして構成する

このステップでは、ApacheWebサーバーを使用して最新のphpMyAdminをインストールする方法を学習します。また、カスタムポートを使用してリモートホスト上のMySQLサーバーに接続し、phpMyAdminからSSLを介して安全に接続する方法についても学習します。

先に進む前に、以下のaptコマンドを使用していくつかのパッケージの依存関係をインストールしてください。

sudo apt install apache2 libapache2-mod-php php-imagick php-phpseclib php-php-gettext php-common php-mysql php-gd php-imap php-json php-curl php-zip php-xml php-mbstring php-bz2 php-intl php-gmp unzip

次に、「/ var / www / html」ディレクトリに移動し、最新のphpMyAdminソースコードをダウンロードします。

cd /var/www/html/
wget -q https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz

次に、phpMyAdminソースコードを抽出し、「phpMyAdmin」という名前の新しいディレクトリに名前を変更します。

tar -xf phpMyAdmin-latest-all-languages.tar.gz
mv phpMyAdmin-5.0.2-all-languages phpMyAdmin

次に、「/ var / www / phpMyAdmin」ディレクトリに移動し、デフォルトの構成ファイルを「config.inc.php」にコピーします。

cd /var/www/html/phpMyAdmin/
cp config.sample.inc.php config.inc.php

vimエディターを使用して「config.inc.php」構成ファイルを編集します。

vim config.inc.php

このリンクを使用してblowfishシークレットコードを生成し、以下のようにコードを「blowfish_secret」行に貼り付けます。

$cfg['blowfish_secret'] = '6}2]RFleN-JT=/vXD}L/0j0v.YALV/e3'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

次に、以下のように「サーバー構成」行にMySQLサーバーの詳細を入力します。

/**
 * Servers configuration
 */
$i = 0;

.....
/* Custom MySQL Server Configuration */
$cfg['Servers'][$i]['host'] = '172.16.0.3';
$cfg['Servers'][$i]['port'] = '8320';
.....

その後、次の構成を貼り付けて、phpMyAdminからMySQLサーバーへのSSL通信を有効にします。また、クライアントとCA証明書のパスを独自のパスに変更し、ユーザー「www-data」がCA証明書とクライアント証明書にアクセスできることを確認してください。

/* SSL Configuration */
$cfg['Servers'][$i]['ssl'] = true;
$cfg['Servers'][$i]['ssl_key'] = '/opt/mysql/certs/client-key.pem';
$cfg['Servers'][$i]['ssl_cert'] = '/opt/mysql/certs/client-cert.pem';
$cfg['Servers'][$i]['ssl_ca'] = '/opt/mysql/certs/ca.pem';

/* Disable SSL Verification for Self-signed certificates */
/* The Good: Connection between phpMyAdmin and MySQL Server are Encrypted */
/* But you're still vulnerable with the MiTM */
$cfg['Servers'][$i]['ssl_verify'] = false;

/* Hide Some Databases */
$cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|sys|mysql)';

保存して閉じます。

次に、「phpMyAdmin」ディレクトリの所有権をユーザー「www-data」に変更します。

sudo chown -R www-data:www-data /var/www/html/phpMyAdmin

これで、phpMyAdminのインストールとphpMyAdminの構成が完了しました。

次に、MySQLサーバーにログインし、MySQL SSLステータスを確認し、phpMyAdminの新しいデータベースとユーザーを作成します。

次のコマンドを使用してMySQLサーバーにログインします。

mysql -u root -P 8329 -p

次に、次のクエリを使用してSSLステータスを確認します。

SHOW VARIABLES LIKE '%ssl%';
STATUS

以下は、得られる結果です。

ご覧のとおり、MySQLサーバーはSSLが有効になっている状態で稼働しており、生成したSSL証明書を使用しています。また、「〜/.my.cnf」構成ファイルを使用したSSLセキュア接続を介してMySQLサーバーに接続しています。

次に、次のクエリを使用して、「phpmyadmin」という名前の新しいデータベースとユーザーを作成します。

CREATE DATABASE phpmyadmin;
CREATE USER 'phpmyadmin'@'%' IDENTIFIED WITH mysql_native_password BY 'phpMyAdminAdmn352#$';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

' exitと入力します 'MySQLシェルからログアウトします。

次に、Webブラウザを開き、アドレスバーに「phpMyAdmin」のパスを使用してサーバーのIPアドレスを入力します。

http:// server-ip / phpMyAdmin /

phpMyAdminログインページで、上部に作成したパスワードを使用してユーザー「phpmyadmin」を入力し、「GO」ボタンをクリックします。

そして、以下のようにphpMyAdminダッシュボードを取得します。

これで、phpMyAdminのインストールと構成が完了しました。

ステップ7-MySQLユーザーとデータベースを作成する

このステップでは、ユーザー、データベースを管理するためのMySQLクエリの主な使用法、およびデータベースバックアップのための基本的なmysqldumpコマンドについて学習します。

MySQLサーバーに接続し、接続ステータスを確認します

MySQLサーバーに接続するには、「mysql」コマンドラインを使用できます。また、デフォルトでは、ローカルMySQLサーバーからのすべての接続はUnixソケットを使用しますが、SSL接続では接続がこれ以上安全になりません。

次のコマンドを使用して、デフォルト構成でMySQLサーバーに接続します。

mysql -u username -p

MySQLサーバーがカスタムポートで実行されている場合は、以下の「-Pポート」オプションを使用してください。

mysql -u root -P 8320 -p

MySQLサーバーがカスタムポートを使用してローカルネットワーク上で実行されている場合は、以下の「h host/IPAddress」および「-Pport」オプションを使用してください。

mysql -u root -h 172.16.0.3 -P 8320 -p

MySQLサーバーに接続したら、次のクエリを実行して接続ステータスを確認します。

STATUS

そして、次の結果が得られます。

これで、MySQLサーバーに正常に接続できました。

データベースの作成と表示

MySQLシェルに接続した後、MySQLデータベースの作成方法、データベースの選択方法、テーブルの作成方法、およびデータの挿入方法を学習します。

新しいMySQLデータベースを作成するには、次のクエリを使用します。

CREATE DATABASE hakase_db;
CREATE DATABASE yume_db;
CREATE DATABASE juice_db;

次に、次のクエリを使用して、MySQLサーバー上のすべてのリストデータベースを確認します。

SHOW DATABASES;
SHOW DATABASES LIKE "%db%";

次に、次のクエリを使用してデータベースを切り替えて選択できます。

USE hakase_db;

次に、次のように「CREATE TABLE」クエリを使用して、データベースに新しいテーブルを作成できます。

CREATE TABLE users (first VARCHAR(20), last VARCHAR(20),
        email VARCHAR(20), birth DATE, country VARCHAR(20));

これで、「DESCRIBE table-name」を使用して、データベースのすべてのフィールドをチェックできます。

DESCRIBE users;

そして、テーブル「users」のすべての詳細フィールドが表示されます。

次に、以下のように「INSERT」クエリを使用してテーブルにデータを手動で挿入できます。

INSERT INTO users
       VALUES ('Mark','Mine','[email protected]','1999-03-20','Canada');

これで、MySQLデータベースにデータが正常に挿入されました。次に、以下のように「SELECT」クエリを使用してテーブル上のすべてのデータを確認します。

SELECT * FROM users;
SELECT email, birth, country FROM users;

そして、テーブルからすべてのデータを取得します。

MySQLユーザーの作成

データベースを作成したら、MySQLサーバーでユーザーを作成し、データベースにユーザー権限を付与する方法を学習します。

ユーザーを作成するための基本的なMySQLクエリは、「CREATEUSER」クエリを使用することです。次に、オプションに続いてコマンド「GRANT」を使用して、データベースの特権をユーザーに付与できます。そして最後に、新しい変更を適用するために付与テーブルをリロードする必要があります。

  • 基本

パスワード「MyHakasePasswordMySQL39==」を使用して「[emailprotected]」という名前の新しいユーザーを作成し、次のクエリを使用して「hakase_db」のすべての権限をユーザーに許可します。

CREATE USER 'hakase'@'localhost' IDENTIFIED BY 'MyHakasePasswordMySQL39==';
GRANT ALL PRIVILEGES ON hakase_db.* TO 'hakase'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

追加情報として、ホスト名'[emailprotected]'はアカウント名の一部です。 '@localhost'は、ユーザーがローカルサーバーから接続することのみを許可します。指定しない場合、デフォルトは「%」で、どこからでもユーザーを許可します。

  • 特定の認証プラグインを使用してリモートアクセス用のユーザーを作成する

特定のホストIPアドレスからのみログインし、特定の認証プラグインを使用できる新しいユーザーを作成します。

クライアントIP「172.16.0.4」を介して「mysql_native_password」認証プラグインに接続する「yume」という名前の新しいユーザーを作成し、ユーザーはデータベース「yume_db」にのみアクセスできるようにします。

CREATE USER 'yume'@'172.16.0.4' IDENTIFIED WITH mysql_native_password BY 'MyYumePasswordMySQL39==';
GRANT ALL PRIVILEGES ON yume_db.* TO 'yume'@'172.16.0.4' WITH GRANT OPTION;
FLUSH PRIVILEGES;

その結果、ユーザー「yume」はIPアドレス「172.16.0.4」でのみMySQLサーバーに接続します。そうしないと、ユーザーの認証がMySQLサーバーによって拒否されます。

  • ユーザーを作成し、暗号化されたSSL接続を使用するように強制する

ユーザーにSSLセキュア接続の使用を強制するには、「REQUIRESSL」オプションを使用できます。安全な接続が失敗した場合、MySQLサーバーに接続できません(接続を確立できません)。

より安全なシナリオでは、「REQUIRE X509」クエリを使用できます。これは、ユーザー/クライアントマシンがクライアントとCA証明書を提供した場合にのみMySQLサーバーへの接続が確立されることを意味します。

ホスト名が「%」の「juice」という名前の新しいユーザーを作成します。このホスト名オプション'%'を使用すると、ユーザー' juice'は任意のIPアドレスから接続できますが、接続はクライアントマシンがクライアントとCAの証明書を提供したときに確立されます。

CREATE USER 'juice'@'%' IDENTIFIED WITH mysql_native_password BY 'MyJuicePasswordMySQL39==' REQUIRE X509;
GRANT ALL PRIVILEGES ON juice_db.* TO 'juice'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

その結果、マシンがクライアントとCA証明書を提供したときに、「ジュース」ユーザーはMySQLサーバーに接続できます。

利用可能なすべてのユーザーと助成金を表示

すべてのユーザーを作成したら、次のクエリを使用してすべてのユーザーを確認します。

SELECT User, Host FROM mysql.user;
SELECT User, Host, plugin FROM mysql.user;

これで、ユーザー、ホスト、およびユーザーが使用する認証プラグインの詳細が表示されます。

次に、以下のように「SHOWGRANTS」クエリを使用してユーザーのすべての権限を確認します。

SHOW GRANTS FOR 'hakase'@'localhost';
SHOW GRANTS FOR 'yume'@'172.16.0.3';
SHOW GRANTS FOR 'juice'@'%';

これで、ユーザーの詳細な権限を取得できます。

その結果、データベースの作成、テーブルの作成、テーブルへのデータの挿入、ユーザーの作成と表示、各ユーザーの詳細権限の表示など、MySQLServerの主な使用法を学習しました。

ステップ8-追加:増分バックアップMySQLデータベースを作成する

このステップでは、すべてのMySQLデータベースをバックアップするための「mysqldump」コマンドの主な使用法を学習します。 'mysqldump'コマンドラインを使用すると、すべてのデータベース、特定または複数のデータベース、およびバックアップテーブルをバックアップできます。

先に進む前に、バックアップディレクトリを作成して移動します。

mkdir -p ~/backup; cd ~/backup

これで、「mysqldump」ユーティリティを使用してMySQLデータベースのバックアップを作成する準備が整いました。

すべてのデータベースをバックアップ

MySQLサーバー上のすべてのデータベースをバックアップするには、以下の「--add-databases」オプションを指定してmysqldumpコマンドを使用します。

mysqldump -u root -P 8320 --all-databases -p > alldbs.sql

これで、データベースのすべてのバックアップが「alldbs.sql」という名前の単一のSQLファイルに保存されます。

バックアップ固有のデータベース

特定のMySQLデータベースをバックアップするには、以下のmysqldumpコマンドにデータベース名を含めてください。

mysqldump -u root -P 8320 -p hakase_db > backup_hakase_db.sql

その結果、バックアップディレクトリの「backup_hakase_db.sql」という名前のデータベース「hakase_db」からSQLバックアップファイルを取得します。

複数のデータベースをバックアップする

複数のデータベース(MySQLサーバー上のすべてのデータベースではない)のバックアップを作成する場合は、以下の「--databases」オプションを使用してください。

mysqldump -u root -P 8320 -p --databases yume_db juice_db > multi-db-once.sql

その結果、2つのデータベース「yume_db」と「juice_db」のバックアップファイルが作成され、「multi-db-once.sql」ファイルという名前が付けられました。

自動バックアップMySQLデータベース

MySQLの自動バックアップを設定するには、Linuxの「cron」を使用します。 MySQLデータベース用の新しいbashスクリプトを作成し、LinuxCronを使用して特定の時間に自動的に実行します。

先に進む前に、次のコマンドを使用してMySQLシェルにログインします。

mysql -u root -P 8320 -p

次のクエリを使用して、いくつかの権限を持つ新しいバックアップユーザーを作成します。

CREATE USER 'backup'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyBackupPasswordMySQL39==';
GRANT PROCESS, SELECT, LOCK TABLES, SHOW VIEW, EVENT ON *.* TO 'backup'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

次に、「exit」と入力してMySQLシェルからログアウトします。

次に、すべてのデータベースバックアップファイルを保存するための新しいバックアップディレクトリ「/ opt / backup/mysql」を作成します。

mkdir -p /opt/backup/mysql

その後、「/ usr / local / sbin」ディレクトリに移動し、vimエディターを使用して新しいbashファイル「auto_backup.sh」を作成します。

cd /usr/local/sbin/
vim auto_backup.sh

ユーザー、パスワード、ポートの詳細を自分で変更し、構成を貼り付けます。

#!/bin/bash

# Basic configuration: datestamp e.g., YYYYMMDD
DATE=$(date +"%Y%m%d")

# Location of your backups (create the directory first!)
BACKUP_DIR="/opt/backup/mysql"

# MySQL login details
MYSQL_USER="backup"
MYSQL_PASSWORD="MyBackupPasswordMySQL39=="

# MySQL executable locations (no need to change this)
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump

# MySQL databases you wish to skip
SKIPDATABASES="Database|information_schema|performance_schema|mysql"

# Number of days to keep the directories (older than X days will be removed)
RETENTION=14

# ---- DO NOT CHANGE BELOW THIS LINE ------------------------------------------
#
# Create a new directory into the backup directory location for this date
mkdir -p $BACKUP_DIR/$DATE

# Retrieve a list of all databases
databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"`

# Dumb the databases in seperate names and gzip the .sql file
for db in $databases; do
echo $db
$MYSQLDUMP --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz"
done

# Remove files older than X days
find $BACKUP_DIR/* -mtime +$RETENTION -delete

保存して閉じます。

Now make the 'auto_backup.sh' script executable and run the script for testing purposes.

chmod +x auto_backup.sh
./auto_backup.sh

As a result, you will get your database backup files on the '/opt/mysql/backup-current-date' directory.次のコマンドを使用して確認してください。

ls -lah /opt/backup/mysql/
ls -lah /opt/backup/mysql/datedir/

以下は、得られる結果です。

As a result, you will get compressed files of your database backup, which means the script is working.

Next, create a new cronjob that will be running the MySQL auto backup script 'auto_backup.sh' every day at the time '00:00'.

Set the default editor to 'vim' and create a new cronjob as user root using the following command.

export EDITOR=vim
crontab -u root -e

次に、次の構成を貼り付けます。

0 0 * * * sh /usr/local/sbin/auto_backup.sh

保存して閉じます。

The new cronjob for user root has been created. Check all cronjob list for the root user using the following command.

crontab -u root -l

And you will get details cron configuration for the user root.

As a result, you've successfully set up the automatic MySQL database backup using the bash script and Linux Cron.

Finally, you've learned how to install and secure the MySQL Database Server on the Debian Buster 10 with phpMyAdmin web-based database management. Also, you've learned the basic MySQL query for managing users, create database and tables, and using the mysqldump utility for backup databases.

参照
  • https://dev.mysql.com/doc/refman/en/
  • https://docs.phpmyadmin.net/en/latest/index.html

Debian
  1. MySQL 8.0/5.7をDebian11/Debian10にインストールする方法

  2. MySQLサーバーをDebian9にインストールする方法

  3. MySQLサーバーをDebian10Busterにインストールする方法

  1. Debian11にRedisサーバーをインストールする方法

  2. MySQLWorkbenchをDebian10にインストールする方法

  3. Debian 11 に MySQL をインストールする方法

  1. Debian8にProFTPDをインストールする方法

  2. MySQLをDebian11にインストールする方法

  3. MySQLWorkbenchをDebian11にインストールする方法