#####
MySQL
#####
Create new user
===============
.. code-block:: sql
grant all privileges on db.* to user@'%' identified by 'passwd';
Show extended table information
================================
.. code-block:: sql
show table status;
Show table structure
====================
.. code-block:: sql
describe
Show indices
============
.. code-block:: sql
show index from
Show all running processes
==========================
.. code-block:: sql
show full processlist;
Kill a process
==============
.. code-block:: sql
kill ;
Repair a table
==============
.. code-block:: sql
repair table ;
Backup whole database
=====================
.. code-block:: bash
mysqldump > backup.sql
Selective backup
================
.. code-block:: sql
select * into outfile "backup.sql" from table where foo="bar";
Create database with utf-8 charset
==================================
.. code-block:: sql
create database default character set utf8;
* Or edit my.cnf
.. code-block:: bash
[mysqld]
default-character-set = utf8
[mysql]
default-character-set = utf8
Use InnoDB tables instead of MyISAM
====================================
* Edit my.cnf
.. code-block:: bash
default-storage-engine=INNODB
Change db charset
=================
.. code-block:: sql
alter database character set utf8;
Add Foreign Key Contraint
==========================
.. code-block:: sql
alter table add constraint foreign key references on delete cascade;
Add check constraint
====================
.. code-block:: sql
alter table add constraint CHECK (some_column > 0 and other_column != "");
Add index
=========
.. code-block:: sql
create index on ();
Change output format
====================
* To display column names as keys in a list append \G at the end of the query
Delete entries older than 30 days
=================================
.. code-block:: sql
DELETE FROM WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= ;
Temporary tables
================
.. code-block:: sql
CREATE TEMPORARY TABLE table2 AS (SELECT * FROM table1)
Reset root password
===================
* Restart db with `` --skip-grant-tables --skip-networking``
Active active cluster
=====================
* Install ``MariaDB-Galera-server`` instead of mysql-server
* Edit ``/etc/my.cnf`` on all nodes
.. code-block:: bash
wsrep_cluster_address=gcomm://master-node
wsrep_node_address=''
wsrep_node_name=''
* On all other nodes than master node init a base db
.. code-block:: bash
mysql_install_db --user=mysql --ldata=/var/lib/mysql
* On master node start
.. code-block:: bash
service mysql bootstrap
* On all other nodes
.. code-block:: bash
service mysql start