AmazonLinux2にMySQLクライアントをインストールしたときの手順メモです。
## インストール
```language-bash
# リポジトリを追加
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
# パッケージがあるか...
MySQLの記事一覧
O'Reillyの「はじめてのSQL」を読んで、MySQL8.0のSQLを学びなおした
2021年9月25日
| カテゴリ: MySQL
|
忘れていたこと、知らなかったことを自分の忘備録としてメモしておきます。
## 2章: データベースの作成と設定
### P21: 文字セット
- コマンド`SHOW CHARACTER SET`で、接続しているMySQLで使える文字コードの一覧が確認できる。
### P25: ...
LaravelのEloquentでsum()やavg()の集計関数を使うと、結果が数字でなく文字列で返ってきます。
```language-php
$totalScore = UserScore::where('team_id', $teamId)->sum('get_point');
\Log::info(json_encode($totalScore)); // "10" (10では...
vagrant upコマンドを実行するだけで、CentOS8.1でMySQL8.0がすぐに利用できるようになるVagrantfileです。(macOSで動作確認しています)
```language-ruby
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config....
Dockerで使い捨てのMySQL5.7サーバを起動する
2019年2月23日
| カテゴリ: MySQL
Dockerを使って、使い捨てのMySQL5.7サーバを起動する方法です
## MySQLの起動
rootのパスワードはランダム生成し、アプリケーション用のユーザ名とパスワードは起動時に指定します。
```language-bash
$ docker run \
--name mysql \
-p 13...
MySQLで0xe2,0x80の改行を除去
2019年2月15日
| カテゴリ: MySQL
MySQLで改行を含むデータから、改行除去するする場合REPLACE()関数を使用することが多いです。
\rや\nといった改行コードに加えて0xe2,0x80といった特定の文字コード列を除去したい場合は、以下のようにchar()関数を組み合わせることで対応できます。
...
プログラムから発行されたSQLを、MySQLサーバ側で全てロギングする
2018年7月13日
| カテゴリ: MySQL
MySQLを使用しているシステムで、アプリケーション側ではなくmysqldが動作しているサーバ側にて、発行されたSQLを全てロギングしたい場合は、my.cnfに下記の定義を追加します。
ファイル名はなんでも良いですが、一般的に/var/log/の下に置くことが多いで...
MySQLでindex定義を確認する方法(外部キーも確認する)
2018年6月6日
| カテゴリ: MySQL
下記のクエリでインデックスの一覧を確認できる。
```language-sql
SELECT TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM information_schema.KEY_CO...
MySQLでの日付処理
2018年6月6日
| カテゴリ: MySQL
|
## 日付列をYYYYMMDDHH24MISS形式で出力
```language-sql
select date_format(created_at, '%Y%m%d%H%i%s')
from TABLE;
```
## 日単位で件数をサマリーする
```language-sql
select date_format(created_at, '%Y%m%d'),
cou...
[MySQL] DB接続ユーザの情報取得を行う
2018年6月1日
| カテゴリ: MySQL
MySQLでユーザの情報を取得する方法です。
## ユーザ一覧を取得する
```language-bash
SELECT User, Host, Password FROM mysql.user;
```
## ユーザ権限を確認する
```language-bash
SHOW GRANTS FOR root@'%';
SHOW GRANTS FOR root@localh...
[MySQL]リードレプリカでMySQLのレプリケーション遅延を1分単位で監視する
2018年5月26日
| カテゴリ: MySQL
MySQLのレプリケーションで、レプリケーション遅延がどれくらいあるか(追いついてきたか)を、毎分監視するためのスクリプトです。トラブルなどで大幅な遅延が発生して、追いつくのに時間がかかりそうな場合は、このスクリプトを実行してしばらく放っておく...
下記のコマンドでDBに存在する全テーブルのcountを取得できます
```language-bash
mysql --defaults-file=.my.cnf -e "select concat('select count(*) as cnt, ''', table_name, ''' as name from ', table_name, ' UNION ALL') from information_s...
[MySQL]mysqlコマンド使用時、明示的にmy.cnfファイルを指定する
2018年5月26日
| カテゴリ: MySQL
MySQLではmysqlコマンドでDBに接続する時に、接続先DBの情報をコマンドラインのパラメータで指定することが多いです。
ですが、この他に`my.cnf`ファイルに接続情報を書いておき、記載のDBに接続する方法があります。
今回は、my.cnfファイルを作成...
## 発生した事象
MySQLでcreate tableを実行した所、下記のERROR 1214が発生した。
```language-bash
ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes
```
## エラーの例
```language-bash
$ mysql -u root -D sa...
新しいプログラム言語やフレームワークを学ぶ時、適当なサンプルデータが入ったMySQLデータベースが欲しくなる場合があります。
今回は、このような時のためにvagrantを利用して下記の構成のvmをコマンド1つで構築できるようなvagrantの設定ファイル(Va...
[MySQL]sakilaサンプルデータベースを非対話で作成する
2018年4月10日
| カテゴリ: MySQL
MySQLが提供しているサンプルデータベースのsakilaを非対話で作成する方法です。
## sakilaサンプルデータベースを作成する
mysql5.6以前を使用している場合は、mysqlコマンドの最後に指定しているパスワード指定(`-p`オプション)は不要かもしれま...
CentOS7.4にMySQL5.7をインストールする
2018年4月9日
| カテゴリ: MySQL
Vagrant上のCentOS7.4(bento/centos7.4)にMySQL5.7をインストールしたので、その時に実行したコマンドを残しておきます。
下記のコマンドを実行したのち、rootユーザの初期パスワードを設定する必要があります。
```language-bash
# インストール済み...
MySQLで"IODKU"は、どういう意味?
2017年11月29日
| カテゴリ: MySQL
MySQLに関するドキュメント見ると"IODKU"という略語が出てくることがあります。
これは、"Insert into ... On Duplicate Key Update"の頭文字をとった略語で、キーが重複したときにUpdateを行うInsert文の事です。
MySQL5.7の初期パスワードを非対話で変更する
2017年11月18日
| カテゴリ: MySQL
|
MySQLは、バージョン5.7からインストール直後に、rootユーザの初期パスワードとしてランダム文字列がセットされるようになりました。ですが、非対話でサーバのセットアップを行う場合、初期のパスワードがランダム文字列だと都合が悪い場合があります。
...
MySQLを使っていて、データベースをcreate databaseしたり、データベースに接続する時に、下記のエラーが出ることがあります。
```language-bash
1253 COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'utf8mb4'
```
## 原因
これは、...
LinuxでMySQLを利用した開発を行っているとき、DBへの操作やバックアップはmysql/mysqldumpコマンドを利用してアクセスできます。
ですが、MySQLのバックアップや、データ集計を手元のPCでバッチ実行したい、WindowsからMySQLへコマンドラインでアクセ...
VagrantでMySQLを起動させて3306のポートフォワーディングを行っているときに、ホストOSから接続するとHost 'gateway' is not allowedエラーが出ることがあります。
(環境によっては'gateway'ではなく、'_gateway'になる場合もあります)
エラーの内容
...
下記の内容でVagrantfileを作成して、'vagrant up'コマンドを実行すれば、MySQLサーバが構築できます。
```language-ruby
Vagrant.configure("2") do |config|
config.vm.box = "bento/centos-7.3"
config.vm.box_check_update = false
confi...
[MySQL]cliで接続時にSQLだけで簡易的なグラフを書く方法
2017年11月11日
| カテゴリ: MySQL
|
MySQLにSSHなどコマンドラインから接続している時に、データの傾向をつかむためにSQLだけで簡単なグラフを書く方法を説明します。
MySQLにはrepeat関数というものがあり、この関数では第二引数で指定した回数分、文字を繰り返し表示させることができま...
[MySQL]rootのパスワードを忘れたときのリセット方法
2017年10月27日
| カテゴリ: MySQL
MySQLでrootのパスワードを忘れたときに、リセットする方法です。
mysqldを起動する時に--skip-grant-tablesオプションを使うと一時的に認証機構をOFFに出来るので、この機能を利用します。
--skip-grant-tablesオプション付きでmysqldを起動している...