这是本文档旧的修订版!
MySQL
Mysql 的 dns 反查(ip反查)有可能让速度变得很慢,特别是在局域网dns配置失效情况下。
- Official site: mysql.com
MariaDB
- Official site: mariadb.org
Tools
- Mac 下好用的工具:Sequal Pro
Manual
Connect
mysql -h host -u username -p password -P port- default port,no password:
mysql -h host -u username -p - disconnect:
mysql> quit
Create User
- create user:
mysql -h host -u username -p mysql> use mysql; mysql> insert into user(Host,User,Password) values("localhost","newname",password("newpassword")); mysql> flush privileges;
Database
- Create:
create database newdb; - List databases:
show databases; - Use databases:
use newdb; - List tables:
show tables - show table :
describe tablenameordesc tablename - change table:
ALTER TABLE- change table name:
ALTER TABLE tablename RENAME TO new_tablename - remove column:
ALTER TABLE tablename DROP COLUMN columnname - add column:
ALTER TABLE tablename ADD COLUMN columnname type - modify column:
ALTER TABLE tablename CHANGE columnname new_columnname new_type;
Add Privages
- 给 newname 用户添加 newdb 所有权限:
GRANT ALL privileges ON newdb.* TO newname@localhost IDENTIFIED BY 'newpassword'; FLUSH privileges;
- 不限数据库不限来源ip不指定密码的写法:
GRANT ALL privileges ON *.* TO username@'%'; FLUSH privileges;
Check Connections
- Connection history:
show status like 'Conn%'; - Current connections:
show status like '%onn%'; - Threads connected:
show processlist;
Query
- select examples,
select a,b from tablename where [conditions] order by a - delete syntax;
delete from tablename where conditions - update syntax;
update tablename set a=1 b=2 where conditions - insert syntax;
insert into tablename(colname1, colname2, …) values(value1, value2, …) - The query mixes ASC and DESC:
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;
ASC 可省略,默认正序。
Index
- create index:
ALTER TABLE table_name ADD INDEX index_name (column_list)ALTER TABLE table_name ADD UNIQUE (column_list)ALTER TABLE table_name ADD PRIMARY KEY (column_list)
- remove index:
DROP INDEX index_name ON talbe_nameALTER TABLE table_name DROP INDEX index_nameALTER TABLE table_name DROP PRIMARY KEY
- show index:
SHOW INDEX FROM table_name
ORDER BY
Tips
- 记录 mysql 命令行结果到文件
mysql> tee output.txt Logging to file 'output.txt' mysql> notee Outfile disabled. #或者 mysql> \T output.txt Logging to file 'output.txt' mysql> \t Outfile disabled.
- 导入导出数据: mysqldump, 查看
man mysqldump - 获取时区设置
SHOW VARIABLES LIKE 'system_time_zone' - Timestamp 类型赋值给 Datetime 类型
UPDATE sometable SET dtime=FROM_UNIXTIME(UNIX_TIMESTAMP(ttime));
- 查看表大小
SELECT TABLE_SCHEMA,TABLE_NAME,DATA_LENGTH,INDEX_LENGTH FROM information_schema.TABLES;
-
- 关闭mysql主从,关闭binlog;
- 开启mysql主从,设置expire_logs_days;
- 手动清除binlog文件,
PURGE MASTER LOGS <params>
- DNS解析如果有问题的话会影响 mysql 连接速度,可在
my.cnf中[mysqld]下添加skip-name-resolve来忽略dns解析与IP反查。忽略后只能使用IP地址来连接数据库。