MySQL での接続は,GitBucketの説明ページにも記載されて手順:
- mysql -uroot -p -hlocalhost
- create database gitbucket;
- grant all privileges on `gitbucket`.* to testuser@localhost identified by 'testpassword';
- flush privileges;
- quit
で進めていくことになります.これで問題ないとは思いますが,自分自身での確認も含めて,自分がやった方法を順を追って説明します.
まず最初は MySQL でのデータベース管理システムへの接続です.これは上記の手順1の通り,以下となります:
server:~$ sudo mysql -u root -p -h localhost
Enter password:
Welcome to the MySQL monitor.
Commands end with ; or \g.Your MySQL connection id is 6Server version: 5.7.23-0ubuntu0.18.04.1 (Ubuntu)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates.
Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
コマンド mysql への引数の意味は
- -u : ユーザ指定 (rootで)
- -p : パスワード要求
- -u : ホスト名の指定
その後,MySQL のコマンドプロンプト mysql> からデータベース操作を行います.
その後の手順を進める前に,まずはデフォルトの MySQL の動作モードがどうなっているかを確認しておく方が良いのではと思います.それは以下のコマンドを mysql> のプロンプトで発行することで確認できます:
- mysql> SELECT @@sql_mode;
上記コマンドを入力すると表形式で情報が表示されますが,そのコンテンツとしては以下が表示されるのではないかと思います:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION詳細についてはネット検索や MySQL のリファレンスマニュアル で確認できると思いますが,一つのポイントは以下かと思います:
NO_AUTO_CREATE_USER認証情報が指定される場合を除き、ほかの方法で実行される場合は、GRANT ステートメントで新規ユーザーを自動的に作成しません。ステートメントは IDENTIFIED BY を使用した空以外のパスワードを指定するか、IDENTIFIED WITH を使用した認証プラグインを指定する必要があります。その後のSQL文における GRANT ステートメント発行において IDENTIFIED BY でパスワードを指定するか,陽にユーザ作成を行ってから GRANT を発行する必要があるとの認識です.MySQL のリファレンスマニュアルでは
「通常、データベース管理者は最初に CREATE USER を使用してアカウントを作成し、次に GRANT を使用してその権限や特性を定義します」(13.7.1.4 GRANT 構文)と記載してあり,通常の順をおったやり方ではまずは CREATE USER でのアカウント作成になるかとは思います.ただし「通常」と記載されている通り,自身の理解があるのであれば簡略した手順で進めていくことも可かと思います.
それをふまえて以下を進めます.
次はデータベースの生成です(手順2).これは GitBucket のページの通りです:
mysql> create database gitbucket;
Query OK, 1 row affected (0.00 sec)無事に成功です.
その後の手順3:
grant all privileges on `gitbucket`.* to testuser@localhost identified by 'testpassword';ですが,これは
testpassword というパスワードにより認識されたローカルホストのユーザ名 testuser に,MySQL の gitbucket データベース下のアクセスに関するすべての権限を与えるという意味になりますかね.特に「all privileges」は
ALL [PRIVILEGES] は、GRANT OPTION および PROXY 権限を除き、権限が付与されるレベルで使用可能なすべての権限を表しますとなっています.
ここではユーザ名とパスワードを適切に指定して発行します.シングルコーテーション等少しわかりずらい所がありますが,自分は以下と入力し無事にOKが出ました
mysql> grant all privileges on gitbucket.* to 'gitbucket'@'localhost' identified by 'gitbucket';
Query OK, 0 rows affected, 1 warning (0.01 sec)その後は手順4の
mysql> flush privileges;です.FLUSH ステートメントは,さまざまな内部キャッシュをクリアまたはリロードしたり、テーブルをフラッシュしたりするものですが,上記の「privileges」指定は以下の意味となります:
Query OK, 0 rows affected (0.00 sec)
mysql データベース内の付与テーブルから権限をリロードします。その後は最後の quit です:
GRANT、CREATE USER、CREATE SERVER、および INSTALL PLUGIN ステートメントの結果として、サーバーは情報をメモリーにキャッシュします。このメモリーは、対応する REVOKE、DROP USER、DROP SERVER、および UNINSTALL PLUGIN ステートメントによって解放されないため、キャッシュを発生させるステートメントの多数のインスタンスを実行するサーバーでは、メモリー使用量が増加します。このキャッシュされたメモリーは FLUSH PRIVILEGES で解放できます。
mysql> quit
Bye
これで無事にデータベースが作成できました.
後は GitBucket 側での設定です.それは次に記事にて.


