- 投稿日:2021-01-01T23:24:35+09:00
ubuntuでmysqlを消そうと思ったら消えなかった話
はじめに
皆さんこんにちは.今回はmysqlを消そうと思ったら消せなかった話を書こうと思います.しかし,この記事もメモ的な感じで書いていくので宜しくお願いします.
ことの顚末
①WordPressを導入しようと思って導入されていたmysqlの構成をすっかり忘れてしまったので入れ直そうと思った!
が,しかし,なにをapt-get xxx なにでインストールしたか忘れた!
②とりあえず定番のやつで消してみよう.
#apt-get remove mysql消えない...
#apt-get remove mysql-server消えない...
#apt-get remove mariadb-server消えない...
え...俺は一体なにでインストールしたんだ...③そうだ!パッケージを調べよう
#apt list --installedこのコマンドを使うことでインストールされているパッケージを調べることができます!
ちなみにこんな感じでした.mysql-client-5.7/bionic-updates,bionic-security,now 5.7.32-0ubuntu0.18.04.1 amd64 [installed,auto-removable] mysql-client-core-5.7/bionic-updates,bionic-security,now 5.7.32-0ubuntu0.18.04.1 amd64 [installed,auto-removable] mysql-common/bionic,bionic,now 5.8+1.0.4 all [installed,auto-removable] mysql-server-5.7/bionic-updates,bionic-security,now 5.7.32-0ubuntu0.18.04.1 amd64 [installed,auto-removable] mysql-server-core-5.7/bionic-updates,bionic-security,now 5.7.32-0ubuntu0.18.04.1 amd64 [installed,auto-removable]みみみ...見えるぞ!
④それでは消しましょう!
#apt-get remove --purge remove mysql-server-5.7皆さん!こんな感じでやると消すことができますので困った時にはぜひやってみてください
以上です.
- 投稿日:2021-01-01T22:20:03+09:00
dockerに苦労した話
今回の教材
課題に取り組む前にLaravelのMigrateで沼にハマる
Reset
docker desktop のアンインストール
スタート -> 設定 -> アプリ(ふつーに消えてくれる)
explorerで普通に消そうとするとブルースクリーンが出て再起動になり、永遠に消せない(この時代にブルースクリーンなんて久しぶりに見たわ...)。powershell管理者モードでバチンと消すしか無いらしい
learning-laravel-tddというディレクトリが基準PS C:\WINDOWS\system32> cd D:\OneDrive\dev PS D:\OneDrive\dev> rm -Force learning-laravel-tddDocker Desktop for Windows のインストール
https://hub.docker.com/editions/community/docker-ce-desktop-windows/
インストール自体はすんなりいくDocker 用 git リポジトリのクローン
OneDrive\dev>$ mkdir learning-laravel-tdd $ cd learning-laravel-tdd $ git clone https://github.com/nunulk/learning-laravel-tdd-docker docker $ mkdir app現在の状態
learning-laravel-tdd ├── app └── dockerDockerを起動してからやってね$ cd docker $ cp .env.example .env $ docker-compose up -dPortのかぶりを解決する(DB_PORTを3308に)
僕の場合は 3306 がかぶっていることがわかった(普段pythonで使ってるから)
learning-laravel-tdd\docker\.envCOMPOSE_PROJECT_NAME=learning-laravel-tdd APP_PATH=../app TZ=Asia/Tokyo WEB_PORT=80 - DB_PORT=3306 + DB_PORT=3308 DB_DATABASE=learning_laravel_tdd DB_USERNAME=root DB_PASSWORD=root DB_TESTING_DATABASE=learning_laravel_tdd_testing DB_TESTING_PORT=3307 DB_TESTING_USERNAME=root DB_TESTING_PASSWORD=rootするとDockerのコントロールパネルでstartしたときに全部つく
動作確認
以下のコマンドを実行して、すべてのコンテナが起動しているかどうか確認
learning-laravel-tdd\docker>$ docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------------- learning-laravel-tdd_app_1 docker-php-entrypoint php-fpm Up 9000/tcp learning-laravel-tdd_db-testing_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3307->3306/tcp, 33060/tcp learning-laravel-tdd_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3308->3306/tcp, 33060/tcp learning-laravel-tdd_web_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcpアプリケーションの初期化
learning-laravel-tdd\docker>$ docker exec -it learning-laravel-tdd_app_1 ash # composer create-project --prefer-dist "laravel/laravel=7.*" .learning-laravel-tdd\app\.env# 中略 LOG_CHANNEL=stack - DB_CONNECTION=mysql - DB_HOST=127.0.0.1 - DB_PORT=3306 - DB_DATABASE=laravel - DB_USERNAME=root - DB_PASSWORD= + DB_CONNECTION=mysql + DB_HOST=db + DB_PORT=3306 + DB_DATABASE=learning_laravel_tdd + DB_USERNAME=root + DB_PASSWORD=root + DB_TESTING_HOST=db-testing + DB_TESTING_PORT=3306 + DB_TESTING_DATABASE=learning_laravel_tdd_testing + DB_TESTING_USERNAME=root + DB_TESTING_PASSWORD=root BROADCAST_DRIVER=log # 中略learning-laravel-tdd\app\config\database.php'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), + 'port' => env('DB_PORT', '3308'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], + 'mysql_testing' => [ + 'driver' => 'mysql', + 'host' => env('DB_TESTING_HOST', '127.0.0.1'), + 'port' => env('DB_TESTING_PORT', '3307'), + 'database' => env('DB_TESTING_DATABASE', 'forge'), + 'username' => env('DB_TESTING_USERNAME', 'forge'), + 'password' => env('DB_TESTING_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], 'pgsql' => [ 'driver' => 'pgsql', 'url' => env('DATABASE_URL'),learning-laravel-tdd\app\phpunit.xml<server name="CACHE_DRIVER" value="array"/> - <!-- <server name="DB_CONNECTION" value="sqlite"/> --> - <!-- <server name="DB_DATABASE" value=":memory:"/> --> + <server name="DB_CONNECTION" value="mysql_testing"/> + <server name="DB_DATABASE" value="learning_laravel_tdd_testing"/> <server name="MAIL_MAILER" value="array"/>Models ディレクトリの作成と User.php の移動
Laravel は、デフォルトでは Model クラスを artisan コマンドで生成すると app ディレクトリ直下に生成しますが、本教材では、Models ディレクトリを作って、そこに配置していきます。インストールで自動的に作られる User.php をあらかじめ Models ディレクトリに移しておきましょう。
まずは以下のコマンドを実行してディレクトリを作成します(コンテナ側でもホスト側でもどちらでも大丈夫です)。
learning-laravel-tdd\app# mkdir app/Models続いて、app/User.php を app/Models 以下へ移動し、名前空間を変更します。
learning-laravel-tdd\app\Models\User.phpnamespace App\Models;User クラスを参照している箇所の名前空間もあわせて変更します。
変更するのは以下の2つのファイルです。
learning-laravel-tdd\app\config\auth.php'providers' => [ 'users' => [ 'driver' => 'eloquent', - 'model' => App\User::class, + 'model' => App\Models\User::class, ],learning-laravel-tdd\app\database\factories\UserFactory.php- use App\User; + use App\Models\User;config is ignored
learning-laravel-tdd\docker\db\my.cnf
を読み取り専用にする
Windowsだけの問題らしいmysqld: [Warning] World-writable config file '/etc/mysql/my.cnf' is ignored. がでる
[Docker+Windows]mysqlのdockerイメージがmy.cnfのマウントのエラーで起動しない時の対処法アプリケーションの確認
最後に、アプリケーションが動作するか確認するため、コンテナ内で以下のコマンドを実行してください。
/app # php artisan migrate
- 投稿日:2021-01-01T11:46:50+09:00
【Heroku】デプロイ時 We're sorry, but something went wrong.解決方法
ローカル環境で構築して、Herokuにデプロイしたが、こんな画面がでてしまいました。
We're sorry, but something went wrong.
原因
開発環境(deveropment)はMySQLとしていたが、Herokuの標準データベースはPostgreSQLだが、MySQLのままだった。
対処方法
gemに下記を追記して、本番環境ではpostgreSQLを適用する。
group :production do gem 'pg', '>= 0.18', '< 2.0' end※
group :production do
で本番環境のみの適用となります。bundle installしますが、開発環境のみで本番環境では不要なので、
--without production
をつけます。$ bundle install --without production次にdatabase.ymlを編集します。
デフォルトではこのようになっていると思います。database.ymlproduction: <<: *default database: <app_name>_production username: <app_name> password: <%= ENV['<app_name>_DATABASE_PASSWORD'] %>これをこのように書き換えます。
database.ymlproduction: adapter: postgresql encoding: unicode pool: 5 database: <app_name>_production username: <app_name> password: <%= ENV['<app_name>_DATABASE_PASSWORD'] %>あとは、
heroku push
して、忘れずにheroku run rails db:migrate
すればOKです!
- 投稿日:2021-01-01T11:12:00+09:00
MySQL 8をWindows 10に導入する手順
当記事では、MySQL Community Edtion v8.0.21をWindows 10 Home 64bit版に導入手順をまとめています。
1. 概要
導入手順は大きく3つあるようです。1つ目はインストーラーを利用する方法、2つ目は.zipファイルに圧縮されたバイナリを自分で解凍・配置する方法、3つ目はVisual Studioを利用してソースコードからビルドする方法です。
For instructions on installing MySQL on Microsoft Windows, using either the MySQL Installer or Zipped binary, see Section 2.3, “Installing MySQL on Microsoft Windows”.
For details and instructions on building MySQL from source code using Microsoft Visual Studio, see Section 2.9, “Installing MySQL from Source”.
MySQL :: MySQL 8.0 Reference Manual :: 2 Installing and Upgrading MySQL
当記事では上記2番目の方法を使って、MySQL環境を整備してみます。
2. バイナリを入手
公式サイトの以下ページよりバイナリを入手します。
MySQL :: Download MySQL Community Server (Archived Versions)
2種類ありますが、とりあえず容量の小さいほうを選んでおきます。
3. バイナリを配置
落としてきた.zipファイルを解凍し、中に入っていたディレクトリを適当な場所――例えば、Cドライブの直下に配置します。ディレクトリ名は好きなものを使ってください。
■ C:\ └ ■ MySQL v8.0.214. 初期化
MySQLは、SQLiteなどのライブラリ型のDBMSとは異なり、プログラム側から利用するにはサーバーとして予め起動しておく必要があるアプリ型のDBMSです。ただ、配置直後はサーバーを起動することはできません。起動させても以下のようにエラーが発生し、すぐ停止してしまいます。
PS C:\MySQL v8.0.21> .\bin\mysqld.exe --console 2021-01-01T01:27:46.883348Z 0 [System] [MY-010116] [Server] C:\MySQL v8.0.21\bin\mysqld.exe (mysqld 8.0.21) starting as process 8148 2021-01-01T01:27:46.885885Z 0 [Warning] [MY-010091] [Server] Can't create test file C:\MySQL v8.0.21\data\mysqld_tmp_file_case_insensitive_test.lower-test 2021-01-01T01:27:46.885966Z 0 [Warning] [MY-010091] [Server] Can't create test file C:\MySQL v8.0.21\data\mysqld_tmp_file_case_insensitive_test.lower-test 2021-01-01T01:27:46.886154Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to 'C:\MySQL v8.0.21\data\' (OS errno: 2 - No such file or directory) 2021-01-01T01:27:46.886616Z 0 [ERROR] [MY-010119] [Server] Aborting 2021-01-01T01:27:46.886790Z 0 [System] [MY-010910] [Server] C:\MySQL v8.0.21\bin\mysqld.exe: Shutdown complete (mysqld 8.0.21) MySQL Community Server - GPL.サーバー起動に先んじて、初期化を行う必要があります。初期化するには.\bin\mysqld.exeに--initializeオプションを付けて呼び出します。なお、このときに--consoleオプションも併せて付けおくことを推奨します。このオプションを付けると処理内容がコンソールに表示されるようになるのです。実行した結果は以下の通りです。
PS C:\MySQL v8.0.21> .\bin\mysqld.exe --initialize --console 2020-12-30T11:32:52.187597Z 0 [System] [MY-013169] [Server] C:\MySQL v8.0.21\bin\mysqld.exe (mysqld 8.0.21) initializing of server in progress as process 10484 2020-12-30T11:32:52.194782Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2020-12-30T11:32:53.920517Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2020-12-30T11:32:55.561144Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: >k)e/yj?*0SQこれで初期化が完了されました。初期化が完了すると、MySQLディレクトリ直下にdataというディレクトリが配置され、そのなかに色々なファイルが生成されていることが分かります。
ちなみに、dataディレクトリの中にファイルが存在する状態――初期化が済んでいる状態で初期化しようとすると以下のようにエラーになります。
PS C:\MySQL v8.0.21> .\bin\mysqld.exe --initialize --console 2020-12-30T10:52:36.074067Z 0 [System] [MY-013169] [Server] C:\MySQL v8.0.21\bin\mysqld.exe (mysqld 8.0.21) initializing of server in progress as process 10040 2020-12-30T10:52:36.076321Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting. 2020-12-30T10:52:36.076333Z 0 [ERROR] [MY-013236] [Server] The designated data directory C:\MySQL v8.0.21\data\ is unusable. You can remove all files that the server added to it. 2020-12-30T10:52:36.076934Z 0 [ERROR] [MY-010119] [Server] Aborting 2020-12-30T10:52:36.077180Z 0 [System] [MY-010910] [Server] C:\MySQL v8.0.21\bin\mysqld.exe: Shutdown complete (mysqld 8.0.21) MySQL Community Server - GPL.何らかの理由から、再び初期化を行いたい場合はdataディレクトリのなかのファイルを削除する必要があります。あるいはdataディレクトリごと消してしまいましょう。
5. サーバー起動
初期化ができましたらサーバーを立ち上げます。サーバーを立ち上げるには.\bin\mysqld.exeを呼び出します。このときも--consoleオプションは付けておいたほうが良いでしょう。
PS C:\MySQL v8.0.21> .\bin\mysqld.exe --console 2020-12-30T12:56:12.441078Z 0 [System] [MY-010116] [Server] C:\MySQL v8.0.21\bin\mysqld.exe (mysqld 8.0.21) starting as process 2004 2020-12-30T12:56:12.456022Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2020-12-30T12:56:13.160181Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2020-12-30T12:56:13.319054Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060 2020-12-30T12:56:13.470037Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2020-12-30T12:56:13.470380Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2020-12-30T12:56:13.505751Z 0 [System] [MY-010931] [Server] C:\MySQL v8.0.21\bin\mysqld.exe: ready for connections. Version: '8.0.21' socket: '' port: 3306 MySQL Community Server - GPL.1つだけ警告が出ていますが、とりあえず無視して大丈夫(なはず)です。
6. 初期アカウントでログイン
サーバーが起動しましたので、初期アカウントを使ってサーバーにログインします。サーバー処理を走らせているコンソールは開いたままにしておいてください。コンソールを閉じたり、CtrlキーとCキーの同時押しで処理を止めたりするとサーバーが落ちます。
サーバーを走らせているのとは別にコンソールを開き、.\bin\mysql.exeを介してサーバーに接続します。接続するためのコマンドは以下の通りです。
PS C:\MySQL v8.0.21> .\bin\mysql.exe --user=root --password=初期パスワードユーザー名にはrootという最初から用意されている特殊なユーザー名を使用します。初期パスワードとは、初期化時に無作為に生成される特殊なパスワードです。もう一度初期化時の処理内容を見てみましょう。
PS C:\MySQL v8.0.21> .\bin\mysqld.exe --initialize --console 2020-12-30T11:32:52.187597Z 0 [System] [MY-013169] [Server] C:\MySQL v8.0.21\bin\mysqld.exe (mysqld 8.0.21) initializing of server in progress as process 10484 2020-12-30T11:32:52.194782Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2020-12-30T11:32:53.920517Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2020-12-30T11:32:55.561144Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: >k)e/yj?*0SQ4番目のメッセージの末尾に
>k)e/yj?*0SQ
という意味不明な文字列が表示されているのが分かります。これが初期パスワードです。これを使って、ログインしましょう。PS C:\MySQL v8.0.21> .\bin\mysql.exe --user=root --password=>k)e/yj?*0SQなお、使用するシェルによっては、初期パスワードに含まれる文字が特殊な記号と勘違いされる場合があります。そのときはシングルクォートかダブルクォートで囲むことで回避できます。
PS C:\MySQL v8.0.21> .\bin\mysql.exe --user=root --password='>k)e/yj?*0SQ'PS C:\MySQL v8.0.21> .\bin\mysql.exe --user=root --password=">k)e/yj?*0SQ"ログインできると以下のような状態になります。
PS C:\MySQL v8.0.21> .\bin\mysql.exe --user=root --password='>k)e/yj?*0SQ' mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.21 MySQL Community Server - GPL Copyright (c) 2000, 2020, 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>
というプロンプトが表示されているのが分かります。これが正常にログインできた証拠になります。7. パスワードの変更
初期アカウントでログインできましたらパスワードを変更しておきましょう。パスワードを変更するにはSET PASSWORD文かALTER USER文を使用します。
mysql> SET PASSWORD = '新しいパスワード';mysql> ALTER USER root@localhost IDENTIFIED BY '新しいパスワード';ALTER USER文のほうには、ユーザー名の後ろ
@localhost
という単語が付いています。これはホスト名というもので、とりあえず必要なものなので付けておきます。8. 動作確認
試しに、いくつか適当なクエリを実行させてみます。
mysql> CREATE DATABASE test_db; Query OK, 1 row affected (0.01 sec) mysql> CREATE TABLE test_db.test_table ( -> id INT PRIMARY KEY, -> name VARCHAR(128) -> ); Query OK, 0 rows affected (0.04 sec) mysql> INSERT test_db.test_table ( -> id, -> name -> ) VALUES ( -> 1, -> 'Qii太郎' -> ); Query OK, 1 row affected (0.01 sec) mysql> SELECT -> id, -> name -> FROM -> test_db.test_table -> ; +----+---------+ | id | name | +----+---------+ | 1 | Qii太郎 | +----+---------+ 1 row in set (0.00 sec) mysql> quit Bye PS C:\MySQL v8.0.21>問題なさそうです。
- 投稿日:2021-01-01T11:12:00+09:00
MySQL v8.0.21をWindows 10に導入する手順
当記事では、MySQL Community Edtion v8.0.21をWindows 10 Home 64bit版に導入手順をまとめています。
1. 概要
導入手順は大きく3つあるようです。1つ目はインストーラーを利用する方法、2つ目は.zipファイルに圧縮されたバイナリを自分で解凍・配置する方法、3つ目はVisual Studioを利用してソースコードからビルドする方法です。
For instructions on installing MySQL on Microsoft Windows, using either the MySQL Installer or Zipped binary, see Section 2.3, “Installing MySQL on Microsoft Windows”.
For details and instructions on building MySQL from source code using Microsoft Visual Studio, see Section 2.9, “Installing MySQL from Source”.
MySQL :: MySQL 8.0 Reference Manual :: 2 Installing and Upgrading MySQL
当記事では上記2番目の方法を使って、MySQL環境を整備してみます。
2. バイナリを入手
公式サイトの以下ページよりバイナリを入手します。
MySQL :: Download MySQL Community Server (Archived Versions)
2種類ありますが、とりあえず容量の小さいほうを選んでおきます。
3. バイナリを配置
落としてきた.zipファイルを解凍し、中に入っていたディレクトリを適当な場所――例えば、Cドライブの直下に配置します。ディレクトリ名は好きなものを使ってください。
■ C:\ └ ■ MySQL v8.0.214. 初期化
MySQLは、SQLiteなどのライブラリ型のDBMSとは異なり、プログラム側から利用するにはサーバーとして予め起動しておく必要があるアプリ型のDBMSです。ただ、配置直後はサーバーを起動することはできません。起動させても以下のようにエラーが発生し、すぐ停止してしまいます。
PS C:\MySQL v8.0.21> .\bin\mysqld.exe --console 2021-01-01T01:27:46.883348Z 0 [System] [MY-010116] [Server] C:\MySQL v8.0.21\bin\mysqld.exe (mysqld 8.0.21) starting as process 8148 2021-01-01T01:27:46.885885Z 0 [Warning] [MY-010091] [Server] Can't create test file C:\MySQL v8.0.21\data\mysqld_tmp_file_case_insensitive_test.lower-test 2021-01-01T01:27:46.885966Z 0 [Warning] [MY-010091] [Server] Can't create test file C:\MySQL v8.0.21\data\mysqld_tmp_file_case_insensitive_test.lower-test 2021-01-01T01:27:46.886154Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to 'C:\MySQL v8.0.21\data\' (OS errno: 2 - No such file or directory) 2021-01-01T01:27:46.886616Z 0 [ERROR] [MY-010119] [Server] Aborting 2021-01-01T01:27:46.886790Z 0 [System] [MY-010910] [Server] C:\MySQL v8.0.21\bin\mysqld.exe: Shutdown complete (mysqld 8.0.21) MySQL Community Server - GPL.サーバー起動に先んじて、初期化を行う必要があります。初期化するには.\bin\mysqld.exeに--initializeオプションを付けて呼び出します。なお、このときに--consoleオプションも併せて付けおくことを推奨します。このオプションを付けると処理内容がコンソールに表示されるようになるのです。実行した結果は以下の通りです。
PS C:\MySQL v8.0.21> .\bin\mysqld.exe --initialize --console 2020-12-30T11:32:52.187597Z 0 [System] [MY-013169] [Server] C:\MySQL v8.0.21\bin\mysqld.exe (mysqld 8.0.21) initializing of server in progress as process 10484 2020-12-30T11:32:52.194782Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2020-12-30T11:32:53.920517Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2020-12-30T11:32:55.561144Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: >k)e/yj?*0SQこれで初期化が完了されました。初期化が完了すると、MySQLディレクトリ直下にdataというディレクトリが配置され、そのなかに色々なファイルが生成されていることが分かります。
ちなみに、dataディレクトリの中にファイルが存在する状態――初期化が済んでいる状態で初期化しようとすると以下のようにエラーになります。
PS C:\MySQL v8.0.21> .\bin\mysqld.exe --initialize --console 2020-12-30T10:52:36.074067Z 0 [System] [MY-013169] [Server] C:\MySQL v8.0.21\bin\mysqld.exe (mysqld 8.0.21) initializing of server in progress as process 10040 2020-12-30T10:52:36.076321Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting. 2020-12-30T10:52:36.076333Z 0 [ERROR] [MY-013236] [Server] The designated data directory C:\MySQL v8.0.21\data\ is unusable. You can remove all files that the server added to it. 2020-12-30T10:52:36.076934Z 0 [ERROR] [MY-010119] [Server] Aborting 2020-12-30T10:52:36.077180Z 0 [System] [MY-010910] [Server] C:\MySQL v8.0.21\bin\mysqld.exe: Shutdown complete (mysqld 8.0.21) MySQL Community Server - GPL.何らかの理由から、再び初期化を行いたい場合はdataディレクトリのなかのファイルを削除する必要があります。あるいはdataディレクトリごと消してしまいましょう。
5. サーバー起動
初期化ができましたらサーバーを立ち上げます。サーバーを立ち上げるには.\bin\mysqld.exeを呼び出します。このときも--consoleオプションは付けておいたほうが良いでしょう。
PS C:\MySQL v8.0.21> .\bin\mysqld.exe --console 2020-12-30T12:56:12.441078Z 0 [System] [MY-010116] [Server] C:\MySQL v8.0.21\bin\mysqld.exe (mysqld 8.0.21) starting as process 2004 2020-12-30T12:56:12.456022Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2020-12-30T12:56:13.160181Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2020-12-30T12:56:13.319054Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060 2020-12-30T12:56:13.470037Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2020-12-30T12:56:13.470380Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2020-12-30T12:56:13.505751Z 0 [System] [MY-010931] [Server] C:\MySQL v8.0.21\bin\mysqld.exe: ready for connections. Version: '8.0.21' socket: '' port: 3306 MySQL Community Server - GPL.1つだけ警告が出ていますが、とりあえず無視して大丈夫(なはず)です。
6. 初期アカウントでログイン
サーバーが起動しましたので、初期アカウントを使ってサーバーにログインします。サーバー処理を走らせているコンソールは開いたままにしておいてください。コンソールを閉じたり、CtrlキーとCキーの同時押しで処理を止めたりするとサーバーが落ちます。
サーバーを走らせているのとは別にコンソールを開き、.\bin\mysql.exeを介してサーバーに接続します。接続するためのコマンドは以下の通りです。
PS C:\MySQL v8.0.21> .\bin\mysql.exe --user=root --password=初期パスワードユーザー名にはrootという最初から用意されている特殊なユーザー名を使用します。初期パスワードとは、初期化時に無作為に生成される特殊なパスワードです。もう一度初期化時の処理内容を見てみましょう。
PS C:\MySQL v8.0.21> .\bin\mysqld.exe --initialize --console 2020-12-30T11:32:52.187597Z 0 [System] [MY-013169] [Server] C:\MySQL v8.0.21\bin\mysqld.exe (mysqld 8.0.21) initializing of server in progress as process 10484 2020-12-30T11:32:52.194782Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2020-12-30T11:32:53.920517Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2020-12-30T11:32:55.561144Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: >k)e/yj?*0SQ4番目のメッセージの末尾に
>k)e/yj?*0SQ
という意味不明な文字列が表示されているのが分かります。これが初期パスワードです。これを使って、ログインしましょう。PS C:\MySQL v8.0.21> .\bin\mysql.exe --user=root --password=>k)e/yj?*0SQなお、使用するシェルによっては、初期パスワードに含まれる文字が特殊な記号と勘違いされる場合があります。そのときはシングルクォートかダブルクォートで囲むことで回避できます。
PS C:\MySQL v8.0.21> .\bin\mysql.exe --user=root --password='>k)e/yj?*0SQ'PS C:\MySQL v8.0.21> .\bin\mysql.exe --user=root --password=">k)e/yj?*0SQ"ログインできると以下のような状態になります。
PS C:\MySQL v8.0.21> .\bin\mysql.exe --user=root --password='>k)e/yj?*0SQ' mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.21 MySQL Community Server - GPL Copyright (c) 2000, 2020, 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>
というプロンプトが表示されているのが分かります。これが正常にログインできた証拠になります。7. パスワードの変更
初期アカウントでログインできましたらパスワードを変更しておきましょう。パスワードを変更するにはSET PASSWORD文かALTER USER文を使用します。
mysql> SET PASSWORD = '新しいパスワード';mysql> ALTER USER root@localhost IDENTIFIED BY '新しいパスワード';ALTER USER文のほうには、ユーザー名の後ろ
@localhost
という単語が付いています。これはホスト名というもので、とりあえず必要なものなので付けておきます。8. 動作確認
試しに、いくつか適当なクエリを実行させてみます。
mysql> CREATE DATABASE test_db; Query OK, 1 row affected (0.01 sec) mysql> CREATE TABLE test_db.test_table ( -> id INT PRIMARY KEY, -> name VARCHAR(128) -> ); Query OK, 0 rows affected (0.04 sec) mysql> INSERT test_db.test_table ( -> id, -> name -> ) VALUES ( -> 1, -> 'Qii太郎' -> ); Query OK, 1 row affected (0.01 sec) mysql> SELECT -> id, -> name -> FROM -> test_db.test_table -> ; +----+---------+ | id | name | +----+---------+ | 1 | Qii太郎 | +----+---------+ 1 row in set (0.00 sec) mysql> quit Bye PS C:\MySQL v8.0.21>問題なさそうです。