基本配置:
- 配置文件路径:
/etc/my.cnf
- 修改字符集:
character-set-server=utf8mb4
- 修改端口号:
port=3306
- 关闭严格模式:
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
- 开启慢查询日志:
slow_query_log=1 slow_query_log_file=/var/log/mysql_slow.log
- 开启二进制日志:
server-id=1 log-bin=日志名
- 执行语句:
mysql -uroot -p -e 'select * from mysql.user'
- 执行文件内命令:
mysql -uroot -p < test.sql
- 备份:
mysqldump -uroot -p --all-databases > backup.sql mysqldump -uroot -p test > backup.sql
- 还原:
mysql -uroot -p -D test < backup.sql --default-character-set=utf8
- 查询全局变量:
SHOW GLOBAL VARIABLES [LIKE "%xxx%"];
- 设置全局变量:
SET GLOBAL 变量名 = 变量值;
- 配置文件路径:
用户权限操作:
- 允许使用弱密码:
SET GLOBAL validate_password_policy = 0; SET GLOBAL validate_password_length = 6; # 密码长度为 6
- 创建用户:
CREATE USER 'test'@'localhost' IDENTIFIED BY '123456';
- 设置密码:
SET PASSWORD FOR 'test'@'localhost' = PASSWORD('123456');
- 删除用户:
DROP USER 'test'@'localhost';
- 查看所有用户:
SELECT DISTINCT CONCAT('''',user,'''@''',host,'''') AS users FROM mysql.user;
- 授予指定权限:
GRANT SELECT,INSERT,UPDATE ON db_zuqiuzhiye.* TO 'test'@'localhost';
- 授予所有权限:
GRANT ALL PRIVILEGES ON db_zuqiuzhiye.* TO 'test'@'localhost';
- 撤销指定权限:
REMOVE SELECT,INSERT,UPDATE ON db_zuqiuzhiye.* FROM 'test'@'localhost';
- 撤销所有权限:
REMOVE ALL PRIVILEGES ON db_zuqiuzhiye.* FROM 'test'@'localhost';
- 查看用户权限:
# 查看当前用户的权限 SHOW GRANTS; # 查看指定用户的权限 SHOW GRANTS FOR 'test'@'localhost';
- 刷新权限(别忘了这一步操作):
FLUSH PRIVILEGES;
- 允许使用弱密码:
主从复制:
- 主服务器配置:
cat /etc/my.cnf
[mysqld] server-id=1 log-bin=master ...
- 从服务器配置:
cat /etc/my.cnf
[mysqld] server-id=2 slave-skip-errors=all ...
- 主服务器设置:
- 进入命令行:
mysql -uroot -p
- 查看主服务器状态:
show master status;
- 进入命令行:
- 从服务器设置:
- 进入命令行:
mysql -uroot -p
- 配置:
change master to master_host='xx.xx.xx.xx', master_port=xxxx, master_user='root', master_password='xxxxxx', master_log_file='xxxxx.xxx', master_log_pos=xxx;
- 开启从模式:
start slave;
- 查看从服务器状态:
show slave status\G
- 进入命令行:
- 测试:
- 主:
create database test;
- 从:
show databases;
- 主:
- 主服务器配置:
分区:
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci PARTITION BY HASH(id) PARTITIONS 4;
二进制日志使用:
- 查看日志状态:
show binlog events\G
- 查看 binlog 的位置:
SHOW VARIABLES LIKE '%datadir%';
- 备份:
- 以位置备份:
mysqlbinlog --start-position=xxx --stop-position=xxx /path/to/bin-log > test.sql
- 以时间备份:
mysqlbinlog --start-datetime='YYYY-mm-dd HH:ii:ss' /path/to/bin-log > test.sql
- 以位置备份:
- 还原:
- 以位置还原:
mysqlbinlog --start-position=xxx --stop-position=xxx /path/to/bin-log | mysql -uroot -p
- 以时间还原:
mysqlbinlog --start-datetime='YYYY-mm-dd HH:ii:ss' /path/to/bin-log | mysql -uroot -p
- 以位置还原:
- 查看日志状态:
使用 mysql5.7 自带中文全文索引:
- 创建:
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT '', `content` text, PRIMARY KEY (`id`), FULLTEXT KEY `title` (`title`,`content`) WITH PARSER `ngram` ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- 配置(分词数量):
ngram_token_size=2
- 使用:
SELECT * FROM test WHERE MATCH (title,content) against ('张三');
- 创建:
使用 mysql5.7 自带 json 类型:
- 创建:
CREATE TABLE `test_json` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` json DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- 使用:
SELECT * FROM test_json WHERE content->'$.name'='lee';
- 创建:
文档更新时间: 2024-04-20 10:57 作者:lee