目次
1. パッケージマネージャーを使用して MySQL をインストールする
3. パスワードで認証するように root ユーザーを設定します (オプション)
1. MySQL パスワード ポリシーを変更するにはどうすればよいですか?
2. MySQL データベースに接続するためのテスト コードを実装します。
一つ、環境
- VMware® Workstation 16 Pro (バージョン: 16.1.2 ビルド-17966106)
- ubuntu-22.04.2-デスクトップ-amd64
2 つのインストール手順
1. パッケージマネージャーを使用して MySQL をインストールする
- Ubuntu/Debian システムの場合、apt-get コマンドを使用してインストールします。
- sudo apt-get アップデート
- sudo apt-get install mysql-server
- CentOS/RHEL システムの場合は、yum コマンドを使用してインストールします。
- sudo yum アップデート
- sudo yum install mysql-server
- インストールが完了すると、MySQL サービスが自動的に開始されます。次のコマンドを使用して、MySQL サービスのステータスを確認します。
- sudo systemctlステータスmysql
- MySQL サービスが自動的に開始しない場合は、MySQL サービスを手動で開始できます。
- Ubuntu/Debian システムの場合は、次のコマンドを使用します。
- sudoサービスmysqlの開始
- CentOS/RHEL システムの場合は、次のコマンドを使用します。
- sudo systemctl mysqlを開始
- 次のコマンドを使用して、MySQL サービスが実行されているかどうかを確認できます。
- sudo systemctl is-active mysql
- MySQL サービスを停止するコマンドは次のとおりです。
- sudo systemctl mysqlを停止します
2. MySQL セキュリティ オプションを構成する
- MySQL 5.7 以降の場合は、次のコマンドを実行して初期設定を行います (このコマンドでは、MySQL root ユーザーのパスワードとその他のセキュリティ オプションを設定するように求められます)。
- sudo mysql_secure_installation
- 次に、パスワード検証コンポーネントを構成するかどうかを尋ねるプロンプトが表示され、「y」と入力します。
- 次に、パスワードの設定を選択する強度が表示されるので、0を入力します
- 匿名ユーザーを削除するかどうかを尋ねられ、「y」を入力します (前の手順でパスワードの強度を選択した後、設定するパスワードを入力するプロセスがありますが、直接スキップします。理由については次のセクションを参照してください)
- リモート ログインに対して root ユーザーを無効にするかどうかを尋ねる場合は、「y」と入力します
- テスト データベースを削除してアクセスするかどうかを尋ねる場合は、「y」と入力します
- 権限テーブルを再ロードするかどうかを尋ねるということは、これまでに行った設定がすぐに有効になることを意味します。「y」を入力してください
- 最後に「Allned!」と表示され、設定は完了です。
- インストールが完了したら、次のコマンドで MySQL サーバーにログインできます (このとき、認証は auth_socket プラグインによって実行されます)。
- sudomysql
3. パスワードで認証するように root ユーザーを設定します (オプション)
- MySQL のセキュリティ オプションを構成する場合、パスワードの強度を設定することを選択した後、パスワードを入力する手順は直接スキップされ、赤枠内の内容が次のように表示されます。
- これは、MySQL ではデフォルトで、root ユーザーがパスワードの代わりに auth_socket プラグインを使用して認証されるためです。auth_socket プラグインは、Unix ソケット ファイルを介してユーザーの資格情報を認証します。したがって、認証に auth_socket プラグインを使用する場合は、root ユーザーのパスワードを設定する必要はありません。
root ユーザーのパスワードを使用して認証する場合は、次の手順に従います。
- root ユーザーとして MySQL にログインします (この時点では auth_socket プラグインによる認証)。
- sudomysql
- ログイン後、MySQL システム データベースに切り替えます。
- mysqlを使用します。
- mysql_native_password プラグインを使用するように root ユーザーの認証方法を更新します: (your_password を root ユーザーのパスワードに置き換えます。長さは 8 文字以上である必要があります)
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
- 変更を有効にするには、権限テーブルを更新します。
- フラッシュ特権;
- これらの手順を完了すると、root ユーザーは auth_socket プラグインではなくパスワードで認証できるようになります。
- 最後に、次のコマンドを使用して、前に設定した MySQL root ユーザーのパスワードを入力して、MySQL サーバーにログインします。
- mysql -u root -p
第三に、知識を広げる
1. MySQL パスワード ポリシーを変更するにはどうすればよいですか?
- MySQL ログイン パスワードを設定すると、次のエラー メッセージが表示されます。
- このエラーは、パスワードのセキュリティを確保するために MySQL のパスワード ポリシーがデフォルトで有効になっているために発生します。パスワード ポリシーによれば、パスワードは受け入れられる前に特定の要件を満たす必要があり、要件は次の赤枠のとおりです。
- ただし、MySQL では、パスワード ポリシー変数を変更することでパスワード ポリシー要件を調整できます。具体的には、次の 2 つの関連変数を変更できます。
- validate_password.policy:この変数はパスワード ポリシー要件を定義します。その値は、次のポリシーの 1 つ以上を組み合わせたものになります。
- LOW:パスワードは長さを満たす必要があるだけです。
- 中:パスワードには少なくとも数字、文字、特殊文字が含まれている必要があります。
- 強力:パスワードには少なくとも数字、文字、特殊文字、その他の文字が含まれている必要があります。
- validate_password.length:この変数はパスワードの最小長要件を定義します。デフォルトは 8 で、必要に応じて調整できます。
次の手順に従って、MySQL でパスワード ポリシーを調整できます。
- MySQL に root としてログインします。
- sudomysql
- 次のコマンドを実行して、パスワード ポリシーを変更します: (パスワード ポリシーを LOW に設定し、パスワードの最小長を 4 に設定します)
- SET GLOBAL validate_password.policy='LOW';
- SET GLOBAL validate_password.length=4;
- 変更を有効にするには、権限テーブルを更新します。
- フラッシュ特権;
- MySQL コマンドライン インターフェイスを終了します。
- やめる;
2. MySQL データベースに接続するためのテスト コードを実装します。
#include <mysql/mysql.h> #include <stdio.h> int main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; char *user = "username"; char *password = "password"; char *database = "database_name"; conn = mysql_init(NULL); // 连接数据库 if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); mysql_close(conn); return 1; } // 执行SQL查询 if (mysql_query(conn, "SELECT * FROM table_name")) { fprintf(stderr, "%s\n", mysql_error(conn)); return 1; } res = mysql_use_result(conn); // 处理查询结果 while ((row = mysql_fetch_row(res)) != NULL) { for(int i = 0; i < mysql_num_fields(res); i++) { printf("%s ", row[i] ? row[i] : "NULL"); } printf("\n"); } // 释放结果集和关闭连接 mysql_free_result(res); mysql_close(conn); return 0; }
- ライブラリがインストールされていることを確認してください
libmysqlclient-dev
。インストールされていない場合は、次のコマンドを使用してインストールできます。
- sudo apt-get インストール libmysqlclient-dev
- コンパイルコマンドでは、MySQL C API ライブラリをリンクする必要があります。次のコマンドでコンパイルできます。
- gcc -o my_program main.c -lmysqlclient
- それでも問題が解決しない場合は、コンパイラが MySQL ライブラリ ファイルへのパスを正しく検出できることを確認してください。MySQL ライブラリ ファイルがデフォルトのパスにない場合は、
-L
フラグを使用してライブラリ ファイルのパスを指定する必要がある場合があります。