目次
- 英語版
- 1. 環境
- 2. MySQLインストール
- 3. rootパスワードリセット
- 4. MySQL接続
- 5. 補足
⚓ 1. 環境
⚓ 2. MySQLインストール
⚓ 2-1. MySQLクライアントインストール
$ sudo apt install mysql-client
⚓ 2-2. MySQLサーバーインストール
$ sudo apt install mysql-server
⚓ 2-3. バージョン確認
MySQLがインストールされたかを下記のコマンドで確認する。
$ mysql --version mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper
⚓ 2-4. 動作確認
⚓ 2-4-1. 起動
$ sudo /etc/init.d/mysql start
⚓ 2-4-2. 停止
$ sudo /etc/init.d/mysql stop
⚓ 2-4-3. 再起動
$ sudo /etc/init.d/mysql restart
⚓ 3. rootパスワードリセット
⚓ 3-1. 権限テーブルの読み込みなしでMySQLに接続する準備
$ sudo mysqld_safe --skip-grant-tables & [1] 5676
※ この --skip-grant-tables &
を使うと、いつでもどこでも誰にでもMySQLにログイン出来てしまい大変危険なので、この初期設定以外では使用を避けるべき。
Grant Tablesの詳しい説明は公式ドキュメント(英語)を参照。
⚓ 3-2. ルート権限でパスワードなしでMySQLに接続
-u
でrootユーザーとして接続する。
$ sudo mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.7.27-0ubuntu0.18.04.1 (Ubuntu) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
⚓ 3-3. パスワード設定と反映
今回は下記のSQLを実行する。
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('hogehoge'), password_expired = 'N' WHERE User = 'root'; mysql> UPDATE mysql.user SET plugin='mysql_native_password' WHERE User='root'; mysql> FLUSH PRIVILEGES; exit
それぞれのSQLが何をしているのか理解しないまま実行するのは危険なので、以下に簡単に説明する。
⚓ 3-3-1. UPDATE mysql.user SET authentication_string = PASSWORD('hogehoge'), password_expired = 'N' WHERE User = 'root';
DB名.テーブル名
で更新をかける対象のDB名、テーブル名を指定。
ユーザー名が root
のレコードのパスワード(authentication_string
)カラムに hogehoge
を、パスワード期限切れ(password_expired
)に N
を設定。
⚓ 3-3-2. UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root;
ユーザー名が root
のレコードのアカウントごとに接続を試行する認証プラグインする(authentication_string
)カラムに mysql_native_password
を設定。
⚓ 3-3-3. FLUSH PRIVILEGES;
設定内容を反映するために、Grant Tablesにリロードする。
⚓ 4. MySQL接続
⚓ 4-1. 権限テーブルを読み込んでMySQLに接続する準備
$ sudo mysqld_safe
⚓ 4-2. 新しく設定したパスワードでMySQLに接続
-u
でrootユーザーとして、-p
でパスワード入力ありで接続する。
$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.7.27-0ubuntu0.18.04.1 (Ubuntu) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. 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の導入は完了。
⚓ 5. 補足
パスワードリセット時に参照した mysql
DBの user
テーブルの中身は、以下のSQLで確認可能。
⚓ 5-1. DB一覧表示
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
⚓ 5-2. DBの中に入る
mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
⚓ 5-3. DBのテーブル一覧表示
mysql> show tables; +---------------------------+ | Tables_in_mysql | +---------------------------+ | columns_priv | | db | | engine_cost | | event | | func | | general_log | | gtid_executed | | help_category | | help_keyword | | help_relation | | help_topic | | innodb_index_stats | | innodb_table_stats | | ndb_binlog_index | | plugin | | proc | | procs_priv | | proxies_priv | | server_cost | | servers | | slave_master_info | | slave_relay_log_info | | slave_worker_info | | slow_log | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ 31 rows in set (0.01 sec)
⚓ 5-4. テーブルのレコードを取得
mysql> select * from user; +-----------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+ | Host | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked | +-----------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+ | localhost | root | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | auth_socket | | N | 2019-11-08 00:00:00 | NULL | N | | localhost | mysql.session | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | Y | N | N | N | N | N | N | N | N | N | N | N | N | N | | | | | 0 | 0 | 0 | 0 | mysql_native_password | *HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE | N | 2019-11-08 00:00:00 | NULL | Y | | localhost | mysql.sys | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | | | | | 0 | 0 | 0 | 0 | mysql_native_password | *HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE | N | 2019-11-08 00:00:00 | NULL | Y | | localhost | debian-sys-maint | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | mysql_native_password | *HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE | N | 2019-11-08 00:00:00 | NULL | N | +-----------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+ 4 rows in set (0.00 sec)
※ SQLの使い方はw3schools.comなどを参照。