目次
とある日
MySQLのあれこれメモです。
インストール編
MySQL :: Download MySQL Yum Repository
MySQL :: MySQL 8.0 Reference Manual :: 2 Installing and Upgrading MySQL
インストール
MySQL :: Download MySQL Yum Repository
sudo rpm -Uvh mysql80-community-release-el7-6.noarch.rpm
バージョン指定インストール
MySQL :: MySQL Community Serverのダウンロード(アーカイブバージョン)
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.14-1.el7.x86_64.rpm-bundle.tar tar -xvf mysql-8.0.14-1.el7.x86_64.rpm-bundle.tar yum install mysql-community-server mysql --version
リリースシリーズ指定インストール
5系インストールする場合
yum repolist all | grep mysql sudo yum-config-manager --disable mysql80-community sudo yum-config-manager --enable mysql57-community yum repolist enabled | grep mysql sudo yum module disable mysql sudo yum install mysql-community-server
運用編
showコマンド
プラグイン確認
show variables like 'default_authentication_plugin';
データベース一覧
show databases;
テーブル一覧
show tables;
テーブルスキーマ確認
show create table table_name;
権限確認
show grants for 'test'@'localhost';
プロセス確認
show full processlist;
ユーザ
作成
create user 'test'@'localhost' identified WITH mysql_native_password BY 'password'
ユーザ一覧確認
select user, host, plugin from mysql.user;
文字コード
SHOW CHARACTER SET;
ランダムデータ
TIMESTAMP
SELECT NOW(); SELECT CURRENT_TIMESTAMP(); SELECT CURRENT_TIMESTAMP; (root@localhost) [test] 8.0.29 > select FROM_UNIXTIME(UNIX_TIMESTAMP(now()) + RAND()); +-----------------------------------------------+ | FROM_UNIXTIME(UNIX_TIMESTAMP(now()) + RAND()) | +-----------------------------------------------+ | 2022-05-18 07:11:39.975426 | +-----------------------------------------------+ 1 row in set (0.00 sec)
テーブル
テーブル容量
現在のデータベースのテーブル一覧
SELECT table_name, engine AS DBエンジン, table_rows AS 行数, avg_row_length AS 平均レコード長, floor((data_length+index_length) / 1024 / 1024) AS ALL_MB, floor(data_length / 1024 / 1024) AS DATA_MB, floor(index_length / 1024 / 1024) AS INDEX_MB FROM information_schema.tables WHERE table_schema = database() ORDER BY (data_length + index_length) DESC;
特定のテーブル
SELECT table_name, engine AS DBエンジン, table_rows AS 行数, avg_row_length AS 平均レコード長, floor((data_length+index_length) / 1024 / 1024) AS ALL_MB, floor(data_length / 1024 / 1024) AS DATA_MB, floor(index_length / 1024 / 1024) AS INDEX_MB FROM information_schema.tables WHERE table_name = "table_name" ORDER BY (data_length + index_length) DESC;
すぐ使うよう
SELECT table_name, ENGINE, table_rows, avg_row_length, floor((data_length + index_length) / 1024 / 1024) AS ALL_MB, floor(data_length / 1024 / 1024) AS DATA_MB, floor(index_length / 1024 / 1024) AS INDEX_MB FROM information_schema.tables ORDER BY (data_length + index_length) DESC LIMIT 10;
データベース
DB容量
SELECT table_schema, floor(SUM(data_length + index_length) / 1024 / 1024) AS ALL_MB, floor(SUM((data_length) / 1024 / 1024)) AS DATA_MB, floor(SUM((index_length) / 1024 / 1024)) AS INDEX_MB FROM information_schema.tables WHERE table_schema = 'database_name' GROUP BY table_schema ORDER BY sum(data_length + index_length) DESC;
接続
use database_name;
環境変数
オートコミット
select @@autocommit;
バックアップとリストア編
バックアップ
定義とデータのダンプ
# データベース mysqldump -u root -p database_name > dump.sql #テーブル mysqldump -u root -p database_name TABLE_NAME > dump.sql
定義のみダンプ
#データベースとテーブル定義をダンプ mysqldump -u root -p database_name -d > dump.sql #データベースの定義のみダンプ mysqldump -u root -p database_name -d -t > dump.sql #テーブルの定義のみダンプ mysqldump -u root -p database_name -d -n > dump.sql
データのみのダンプ
#データベースのデータ mysqldump -u root -p -t database_name > dump.sql #テーブルのデータ mysqldump -u root -p -t database_name TABLE_NAME > dump.sql
リストア
# データベースへリストア mysql -u root -p database_name < dump.sql
〆
適宜更新予定です。
参考記事
MySQL8でバージョンを指定してインストールする | BITTER GOURD
MySQL基礎コマンド チートシート(随時更新) – 0から始めるインフラ日誌 – 30代インフラエンジニアがWebインフラ中心に備忘録を書き溜めていきます
MySQL ::MySQLYumリポジトリを使用するためのクイックガイド
MySQL|DB容量、テーブル容量の確認方法 - わくわくBank
MySQLのデータベースをmysqldumpでバックアップ/復元する方法 |