DB:MySQL

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
DB:MySQL [2022/11/29 23:46] – 削除 - 外部編集 (Unknown date) 127.0.0.1DB:MySQL [2025/04/12 05:15] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
 +# 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 <UserName> -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 <dbName>.* to <UserName>@<HostName>
 +```
 +
 +##### 権限削除
 +```
 +> revoke all on <dbName>.* from <UserName>@<HostName>
 +```
 +
 +##### DBのバックアップ
 +
 +- バックアップ
 +
 +```
 +$ mysqldump -u <MySQLユーザー名> -p<MySQLパスワード> <Redmineデータベース名> > <データ出力先ファイル名>
 +```
 +
 +※「-p」の直後は半角スペースはいらない。
 +
 +- リカバリ
 +
 +```
 +mysql -u <MySQLユーザー名> -p<MySQLパスワード> <Redmineデータベース名> < <ダンプデータファイル名>
 +```
 +
 +※上記リカバリコマンドは、sqlファイルを実行するときも同じコマンドとなる。