# MySQL ##### 公式サイト [[https://dev.mysql.com/doc/refman/8.0/ja/|公式リファレンス]] ##### 参考にしたサイト [[https://qiita.com/CyberMergina/items/f889519e6be19c46f5f4|よく使うMySQLコマンド(Qiita)]] ## インストール 参考サイト:[[https://qiita.com/zaburo/items/7518a432d915c061983f|CentOS7にMySQL8.0をインストール - Qiita]] ##### レポジトリのインストール ``` $ rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm ``` 最新のリポジトリは[[https://dev.mysql.com/downloads/repo/yum/|こちら]]で確認できる ##### レポジトリの確認 下記のコマンドを実行し、「*mysql80-community/x86_64*」が有効になっていることを確認する。(2021/12現在) ``` $ yum repolist all | grep mysql ``` ##### インストール ``` $ yum install mysql-community-server ``` ##### 起動 ``` $ systemctl start mysqld ``` ##### 自動起動 ``` $ systemctl enable mysqld ``` ## 初期設定 ##### 初期パスワードの確認 インストール時にrootユーザのパスワードがlogに出力される。 ``` $ grep /var/log/mysqld.log ``` ##### ログイン 下記コマンド実行後、先ほど確認したパスワードを入力する。 ``` $ mysql -u root -p ``` ※MySQL接続時に下記のエラーが出る場合がある。その場合、下記の手順を実行する。 「*mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost'*」 参考サイト:[[https://linux-svr.com/tips/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9/23.php|MySQLに「'Access denied for user 'root'@'localhost'」で接続できない場合の対処法 - 初めてのVPS構築]] ##### (エラー時)設定ファイルの編集 「*/etc/my.cnf*」を開き、「*[mysqld]*」に「*skip-grant-tables」を追加する。 ``` $ vi /etc/my.cnf ``` ##### (エラー時)権限の反映 MySQLに接続し、設定ファイルで追記した設定を反映する。 ``` $ mysql -u root -p mysql> flush privileges; ``` ##### rootユーザの新しいパスワードを設定 ``` mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '<新しいパスワード>'; ``` ##### MySQLのステータスの確認 動作しているバージョンが8.0.0以上になっていることを確認する。 ``` mysql> status ``` ##### (エラー時)設定を戻す 追記した「*skip-grant-tables*」をコメントアウトもしくは削除する ## コマンド ### ログイン ##### パスワード入力でのログイン ``` $ mysql -u -h localhost -p ``` ### データインポート・エクスポート ##### エクスポート ``` $ mysqldump -u[ユーザ名] -p[パスワード] -r [出力データファイルパス] [データベース名] ``` オプションの指定で「*--single-transaction*」がある。 ダンプ中にテーブルをREADロックしないように付与する。 ##### インポート ``` $ mysql -u[ユーザ名] -p[パスワード] [インポートするデータベース名] < [エクスポートファイル] ``` ### 権限関連 ##### 登録されてるホストとユーザー名の確認 ``` > select user, host from mysql.user; ``` ##### 特定のユーザーの権限確認 ``` > show grants for 'UserName'@'HostName'; ``` ##### 権限付与 ``` > grant all privileges on .* to @ ``` ##### 権限削除 ``` > revoke all on .* from @ ``` ##### DBのバックアップ - バックアップ ``` $ mysqldump -u -p > <データ出力先ファイル名> ``` ※「-p」の直後は半角スペースはいらない。 - リカバリ ``` mysql -u -p < <ダンプデータファイル名> ``` ※上記リカバリコマンドは、sqlファイルを実行するときも同じコマンドとなる。