MySQL

MySQL5.7のベンチマーク

MySQL5.5と大幅にパフォーマンスが異なる. https://www.mysql.com/jp/why-mysql/benchmarks/

SQL_CALC_FOUND_ROWS

SQL_CALC_FOUND_ROWS は, FOUND_ROWS と組み合わせることでLIMITを除き実際は何件なのかを表示してくれる. SELECT SQL_CALC_FOUND_ROWS `table`.`column`, `table2`.`column`, `table2`.`column2` FROM (`table`) JOIN `table2` limit 100; // この時点で実…

HomebrewでMySQL56をインストール・設定する

環境 MacOSX 10.11 Homebrew 0.9.5 (git revision fbd9; last commit 2016-01-22) MySQLをダウングレードさせて再度インストールし直す場合 % brew uninstall mysql57 % sudo rm -rf /usr/local/var/mysql インストール // バージョンを指定してインストール…

Homebrewで入れたMySQLが起動しない.

環境 MacOSX 10.11 MySQL Ver 14.14 Distrib 5.7.10, for osx10.11 (x86_64) using EditLine wrapper Homebrew 0.9.5 (git revision fbd9; last commit 2016-01-22) 事象 エラーNo. 1 : socketでエラー&PIDが見つからないと怒られる. % mysql -u root -p En…

GROUP BY まとめ(+HAVING)

環境 Server version: 5.6.27 Source distribution 文法 グループごとに分けてから抽出 SELECT 計算/集計したカラム FROM テーブル GROUP BY グループ化するカラム HAVING 条件 抽出してからグループに分ける SELECT 計算/集計したカラム FROM テーブル WHER…

SQLインジェクションの対策

SQLインジェクションの対策 SQLインジェクションによるクレジットカード情報漏洩により、3131万の損害が認定された裁判が過去にある。SQLインジェクションの被害平均は、4800万 ~ 1億円にも上る。 なぜ発生するのか? エスケープ、プレースホルダを使えと言わ…

MySQL 文法 まとめ(更新中)

最終更新: 2016/02/25 環境 Server version: 5.6.27 Source distribution データ型の説明 数値型 numeric value type INT -2147483648 ~ 2147483647 (case of no sign 0 ~ 4294967295) TINYINT -128 ~ 127 (case of no sign 0 ~ 255) SMALLINT -32768 ~ 3276…

Update (sync) local database scheme with MySQLWorkbench

If you have .mwb file, you open it from MySQLWorkbench and command + shift + y. Then you tap continue button. After finish sync your local, when you close MySQLWorkbench, do not save any changes.

MySQLへ接続ができない&権限エラーの対処 Macports

Environment Mac OS X MacPorts 2.3.3 PHP 5.4.41 MySQL Server version: 5.6.24 Phenomenon MySQLへ接続しようとしても、SocketがあるのにSocketがないと怒られる // 接続を試みる % mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect t…

shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied

shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission deniedの部分を直します。 % sudo -u _mysql /opt/local/lib/mysql56/bin/mysql_install_db Password: shell-init: error retrieving current direc…

バックアップ MySQL dump

testデータベースをバックアップ ( UTF-8 ) $ mysqldump --default-character-set=utf8 -u root -p test > ~/Desktop/test_dump.sql すべてのデータベースをバックアップ $ mysqldump -u root -x --all-databases > dump.sql バックアップを復元 $ mysql -u …

my.cnfを無視してしまう

Warning: World-writable config file '/opt/local/etc/mysql56/my.cnf' is ignored mysql56/my.cnf のpermissionを変更します。 % sudo chmod 660 /opt/local/etc/mysql56/my.cnf % mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your M…

Fatal error: Class 'Locale' not found in

Fatal error: Class 'Locale' not found in こちらのエラーはPHPの拡張関数、Localが利用できないため表示されます。 % sudo port install php55-intl php-intl をインストールします。 その後、php.iniの以下の行をコメントアウトします。 % sudo vi /opt/l…

パスワードなしでMySQLへログインする

% sudo launchctl start org.macports.mysql56 --skip-grant-tables // または % sudo launchctl start mysql56 --skip-grant-tables // または % mysqld_safe --skip-grant-tables &

MySQLのサーバー起動・停止 (Macports)

開始 % sudo /opt/local/share/mysql56/support-files/mysql.server start % sudo port load mysql56-server % sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql56-server.plist 停止 % sudo /opt/local/share/mysql56/support-files/mysq…

MySQL パスワード変更

// PASSWORD関数で暗号化 $ mysql -u root -p mysql> update mysql.user set password=PASSWORD('root') where user='root'; Query OK, 0 rows affected (0.03 sec) Rows matched: 1 Changed: 0 Warnings: 0 // 設定したパスワードを反映 mysql> flush privi…

Connection error of phpMyAdmin ( MacPorts )

If you have below error, you should see 1~3 step. You don't have permission to access /phpmyadmin/ on this server. 1. If you do not install phpMyAdmin yet, install by below command. % sudo port install phpmyadmin +php54[55][56] 2. Does you…

phpMyAdminのインストール <Macports>

$ sudo port install phpmyadmin $ sudo vi /etc/hosts 127.0.0.1 phpmyadmin $ sudo vi /opt/local/apache2/conf/httpd.conf NameVirtualHost *:80 <VirtualHost *:80> ServerName phpmyadmin DocumentRoot /opt/local/www/phpmyadmin <Directory "/opt/local/www/phpmyadmin"> Order deny,allow Allow from all </directory></virtualhost>

mysqld.sockがない場合

mysqld.sockがない場合、以下のコマンドで作成できます。 $ sudo touch /opt/local/var/run/mysql56/mysqld.sock

データ型一覧

データ型一覧 TINYINT -128から127 SMALLINT -32768から32767 MEDIUMINT -8388608から8388607 INT -2147483648から2147483647 BIGINT -9223372036854775808から9223372036854775807 FLOAT -3.402823466E+38 から -1.175494351E-38 1.175494351E-38 から 3.40…

you have specified an invalid database connection group

これはdatabase.phpにおいて、$active_group = 'default';部分が誤っている可能性があります。 masterなどへの変更が必要か、確認してみて下さい。 データベースに接続(インスタンス生成)する際には、どのデータベースに接続するかを指定する必要があります…

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql55/mysqld.sock' (38)

% mysql -u root -p % ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql55/mysqld.sock' (38) mysqld.sockはある、が繋がらない。 % sudo -u _mysql /opt/local/lib/mysql55/bin/mysql_install_db Instal…

Sequel Proの接続

ローカル接続 ssh接続は後ほど追記します。

my.cnf

MySQLの設定ファイル % sudo vi /opt/local/etc/mysql55/my.cnf # Use default MacPorts settings # !include /opt/local/etc/mysql55/macports-default.cnf [mysqld] max_allowed_packet = 16M + character-set-server=utf8 + [mysql] + default-character-…

mysql_secure_installationの設定まとめ

最終更新日: 2015/11/08 環境 MacPorts 2.3.2 MacOS 10.10 MySQL 5.5 Homebrew 0.9.5 MacOSX 10.11 MySQL 5.6.27 MySQLの初期化 MacPorts % sudo -u _mysql /opt/local/lib/mysql55/bin/mysql_install_db Installing MySQL system tables... OK Filling help…

MacPortsからHomebrewへの移行&環境構築(Ruby&Apache&MySQL)

2015/11/09 更新 環境 MacOSX 10.11 MacPorts 2.3.4 Homebrew 0.9.5 (git revision 9942; last commit 2015-11-07) Ruby 2.2.3 bundler 1.10.6 Apache/2.4.17 (Unix) MySQL 5.7.9 なぜHomebrewにしたか 参考にしたサイトがほとんどと言っていいほどHomebrew…

port検索 mysql

mysql> show variables like 'port'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 0 | +---------------+-------+ 1 row in set (0.00 sec)

mysqlの任意ユーザーのパスワード変更

mysql> set password for ユーザー名@'ホスト名' = password('パスワード'); mysqlへログイン後、以下を実行します。 mysql> set password for root@'localhost' = password('aaaaaaaaaaaaaa');

= nullと is null

nullを指定する際、イコールで指定しても更新されません。 カラム = null mysql> update details set title = "aaa" where deleted_at = null; Query OK, 0 rows affected (0.00 sec) Rows matched: 0 Changed: 0 Warnings: 0 //実行はできるが、アップデー…

【MySQLWorkbench】既存のDBからER図を起こし、mwbファイルも作成する

既存のDBからER図(Entity Relationship Diagram)をMySQLWorkbenchで作成する。 (新規ER図はMySQL Model > Add Diagramから作成できる。) 前提:すでにローカルのDBとMySQLWorkbenchが接続されていること メニュー メニュー > Databese > Reverse Enginee…

正規化

第一正規化:1つのテーブルで同じカラムが重複しないようにする 関数従属:主キーに他のカラムが紐付いている状態 第二正規化:部分関数従属するカラムを分離する 部分関数従属:あるカラムが、そのテーブルの一部のキーだけに紐付いている状態 第三正規化:…

実行中のプロセスをKillする

% ps command confirm executing process. プロセスを確認する % ps -ax % ps -ax | grep mysql 101: 3639 ?? 0:00.04 /bin/sh /opt/local/lib/mysql56/bin/mysqld_safe --skip-grant-tables 102: 3760 ?? 0:14.35 /opt/local/lib/mysql56/bin/mysqld --base…

where or and で特定のレコードを絞り込みする

mysql> SELECT カラム名 FROM テーブル名 WHERE カラム名 = [>,<,<=,>=] 'データ名' or (カラム名 = [>,<,<=,>=] 'データ名' AND カラム名 = [>,<,<=,>=] 'データ名'); mysql> select distinct last_name from email_list where last_name = '遥' or (last_n…

uniqueなデータのみレコードからselectして表示する

distinct テーブル内のユニークなデータのみselectして表示します。 mysql> SELECT DISTINCT フィールド名 FROM テーブル名; mysql> select distinct last_name from email_list; +-----------+ | last_name | +-----------+ | 晴気 | | 太 | | 遥 | +------…

MySQLのセキュリティを高める

% sudo /opt/local/lib/mysql55/bin/mysql_secure_installation [15:45:21] NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it,…

DBの文字コード確認

$ mysql -u root -p mysql> show variables like 'char%'; +--------------------------+------------------------------------+ | Variable_name | Value | +--------------------------+------------------------------------+ | character_set_client | u…

InnoDB からテーブルの外部キー定義を返す

外部キーの定義がどうなっているのか調べる。 既存のテーブルを新規で作成するとしたら、という解釈でもよい。 式 show create table テーブル名 \G mysql> show create table table_name \G *************************** 1. row **************************…

テーブル毎のステータスを確認する

式 mysql> use db_name mysql> show table status \G mysql> show table status \G *************************** 1. row *************************** Name: table_name Engine: InnoDB Version: 10 Row_format: Compact Rows: 3 Avg_row_length: 5461 Data_…

MULとは

PRI:PRIMARY MUL:MULTIPLE mysql> desc test_table; +-------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+----------------+ …

インデックス情報を表示する

式 show index from テーブル名; mysql> show index from test_table; +----------------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | T…

カラムにindexを追加して更新する

式 mysql> alter table テーブル名 add index インデックス名(カラム名); mysql> alter table test_table add index fk_u_id(u_id); Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc test_table; +-------------+--…

テーブルに格納されているカラムのデータをすべて空にする

式 mysql> delete from テーブル名; mysql> select * from test_table; +-------------+---------+----------+----------+ | response_id | user_id | topic_id | response | +-------------+---------+----------+----------+ | 1 | 2 | 3 | 2 | | 2 | 1 | …

データベースの正規化について

正規化とはリレーショナブルデータベースにおいて重複データをなくし、ロジックとして一意性を持たせたテーブル同士を結合するよう再設計すること。 基本的にはアトミックデータ(データベース上でブレークダウンした最小のデータ)を考慮する必要がある。 正…

カラム名を変更する #alter table

式:alter table テーブル名 change 古カテゴリー名 新カテゴリー名 型情報 mysql> alter table test_table change old_column new_column; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL se…

カラムを参照し合う 【MySQL Workbench】

テーブルとテーブルのカラム同士をリレーショナブルにするためには、外部キー制約を設定する必要があります。 Identifying Relationship (特定の関係) これは参照される側のデータ(子)は、参照元のデータ(親)が入っている必要がある場合に用います。 (…

MySQLサーバーの文字コード設定

sudo vi /opt/local/etc/mysql55/my.cnf # Use default MacPorts settings !include /opt/local/etc/mysql55/macports-default.cnf [mysqld] max_allowed_packet = 16M character-set-server=utf8 mysqldの設定にcharacter-set-server=utf8を書き込み保存し…

テーブルの文字コードを変更する #alter #convert to character set

以下でテーブルの文字コードを変更できます。 alter table テーブル名 convert to character set 文字コード mysql> alter table `table_name` convert to character set utf8; Query OK, 3 rows affected (0.08 sec) Records: 3 Duplicates: 0 Warnings: 0 …

MySQL サーバー変数などの確認 #show variables;

mysql> show variables\G *************************** 1. row *************************** Variable_name: auto_increment_increment Value: 1 *************************** 2. row *************************** Variable_name: auto_increment_offset Val…

delete

mysql> delete from user where user_id = 3 && username = 'tanaka'; delete from テーブル where カラム = '' && カラム = ''; whereでは、一意なものを指定(ユニークが設定してあるもの)。 andで他のカラムと組み合わせて削除する際他のデータも一緒に…

データ更新 | update

UPDATE table SET column = new_data WHERE unique_column = ''; http://dev.mysql.com/doc/refman/5.1/ja/update.html mysql> update foo.bar set password = SHA('baz') where u_id = 1; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 …