(在shell中)连接MySQL服务器: mysql -h host -u user -p
(在MySQL命令行客户端中)显示所有数据库: SHOW DATABASES;
,使用某个数据库: USE databasename;
,显示当前数据库中所有数据表: SHOW TABLES;
(在shell中)数据库备份: mysqldump -h host -u user -p dbname > /path/to/target_file.sql
,单独导出某个数据表: mysqldump -h host -u user -p dbname tablename > /path/to/target_file.sql
。
只导出数据表结构:使用mysqldump时加-d
选项
(在shell中)恢复数据库: mysql -h host -u user -p dbname < /path/to/source_file.sql
。
删除数据库的SQL语句: DROP DATABASE dbname
。
为数据库添加字段的SQL语句: ALTER TABLE `serverinfo` ADD COLUMN processlist varchar(1024) DEFAULT NULL COMMENT '进程列表' AFTER `alias`;
显示创建的SQL语句:
SHOW CREATE DATABASE db_name
SHOW CREATE TABLE table_name
服务器状态信息: SHOW STATUS
显示授权用户: SHOW GRANTS
显示服务器错误或警告信息: SHOW ERRORS/SHOW WARNINGS
修改MySQL数据库默认编码为UTF-8:在MySQL配置文件my.cnf中找到mysqld部分,在这部分中添加一句 character_set_server=utf8
,重启MySQL服务即可。
MySQL用户创建与授权:
- 以root用户登录MySQL
- CREATE USER 'username'@'host' IDENTIFIED BY 'password';
- GRANT privileges ON databasename.tablename TO 'username'@'host'; // 如:GRANT ALL ON test.* TO 'pig'@'localhost';
INSERT INTO Evil0day (`app`,`version`) SELECT `app`, `version` FROM Fingerprint WHERE app="joomla" AND version >="3.2.0" AND version <="3.4.4" GROUP BY `version`;
ALTER TABLE table_name
ADD INDEX [index_name] [index_type] (index_col_name,...) [index_option];
如:
ALTER TABLE Users
ADD INDEX (user_name);
- 显示数据库每一列的信息:
SHOW COLUMNS FROM table_name;
或DESCRIBE table_name;
- 显示广泛的服务器状态信息:
SHOW STATUS;
- 显示授予用户的安全权限:
SHOW GRANTS;
DESC
关键字只应用到直接位于其前面的列名。如果想在多个列上进行降序排序,必须对每个列指定DESC关键字。- 为了检查某个范围的值,可使用 BETWEEN 操作符,该操作符需要两个值,即范围的开始值和结束值。√
- 空值检查,用
IS NULL
子句,如:SELECT prod_name FROM products WHERE prod_price IS NULL;
- WHERE可包含任意数目的AND和OR操作符,但是在处理OR操作符之前,优先处理AND操作符。可以使用圆括号来明确地分组相应的操作符。
- 通配符
_
,用途与%
一样,但下划线只匹配单个字符而不是多个字符。 Concat
函数用于拼接字符串,如:SELECT Concat(vend_name, ' (', vend_country, ')') FROM vendors ORDER BY vend_name;
- 可使用
RTrim()
、LTrim()
、Trim()
函数去除字符串两边的空格。
原因:我们测试环境的访问速度过慢,主要原因是DB服务器和Web服务器之间的网络太差,所以将DB服务也迁移到Web服务器上。
原MySQL版本:5.1.49,目标MySQL版本:5.6.19
步骤:
-
1.MySQL源码编译,见 http://dev.mysql.com/doc/refman/5.6/en/installing-source-distribution.html ,其中记得加系统账号mysql,设置数据目录权限,使用mysql_install_db进行数据库初始化
-
2.配置MySQL:
// 比如在mysqld部分添加以下两行
// 数据目录的路径
datadir=/var/lib/mysql
// 套接字文件路径
socket=/tmp/mysql.sock
-
3.修改用户密码,比如root的密码:
mysqladmin -u root password 'new-password'
-
4.数据导入导出:
mysqldump -h host -u user -p dbname > /path/to/target_file.sql
CREATE DATABASE dbname DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci
,如果dbname属于MySQL的关键字,那么还得加反引号。mysql -h host -u user -p dbname < /path/to/source_file.sql
-
5.测试应用程序:由于新旧两个版本的MySQL版本差别较大,所以需要在一些细节上对应用程序做调整。
- 如果数据表的某一字段设置为NOT NULL,但没有指定DEFAULT,在5.1.49版本上,如果应用程序在向该数据表插入一条记录且没有指定该字段的值,不会报错,但在5.6.19上会报错,所以更好的习惯是创建数据表/字段的时候,在指定NOT NULL的同时指定DEFAULT值
- 在版本5.6.19上,若一个字段的类型为timestamp,即使是0值,也必须按照格式给出,如:“0000-00-00 00:00:00”,但在5.1.49上可以直接给“0”
mysql> show slave hosts
-- 查看所有连接到Master的Slave信息mysql> show master status
-- 查看Master状态信息mysql> show slave status
-- 查看Slave状态信息mysql> show binary logs
-- 查看所有二进制日志