MySQL命令
建库
CREATE DATABASE `databaseName` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
创建用户
CREATE USER 'userName'@'localhost' IDENTIFIED BY 'eKw5Ap9EBwjIRc_AO2!Y84';
-- userName: 你将创建用户的名字
-- localhost : 本地用户,如果想让该用户可以**从任意远程主机登陆**,可以使用`%`
-- password : 密码
授权
GRANT all ON databaseName.* TO 'userName'@'%';
GRANT ALL PRIVILEGES ON databaseName.* TO 'userName'@'ip' IDENTIFIED BY 'password' WITH GRANT OPTION;
-- 授权后必须刷新权限才能生效
flush privileges;
查看权限
-- '\G' 表示以竖向的形式展示, 方便查看
select * from mysql.user where user='userName'\G;
删除用户
DROP USER 'username'@'localhost';
撤销权限
REVOKE all ON databaseName.tableName FROM 'userName'@'localhost';
还原数据
source workDispatcher.sql
增加字段
ALTER TABLE tableName ADD COLUMN columnName VARCHAR(20) DEFAULT NULL COMMENT '';
修改密码
set password for '用户名'@'%' = password('新密码');
//或者
ALTER USER 'root'@'%' IDENTIFIED BY '123456';
flush privileges;
备份数据库
# 1、在console1执行mysql命令,锁住数据库实例为只读状态,阻塞所有的DML写语句,DDL语句,更新操作的事务提交语句,从而获得一致性视图
flush tables with read lock;
# 2、在console2执行shell命令,做全库备份
mysqldump -u root -p DB_NAME > /root/DB_NAME.sql
# 3、回到console1执行mysql命令,释放全局锁
unlock tables;
binlog日志相关
# 查看当前的日志名称
show master status;
# 查看binlog日志
mysqlbinlog -v BIN_LOG_FILE_NAME
--start-positon=11001
--stop-position=11004
--start-datetime='2022-10-10 23:27:27'
--start-datetime='2022-10-10 23:29:00'
# 使用binlog日志还原数据
# 还原之前最好先使用 flush logs 开启新的binlog日志,以便确定业务数据的最后边界
mysqlbinlog -v --start-positon=11001 --stop-position=11004 BIN_LOG_FILE_NAME | mysql -u root -p
重新统计索引扫描行数
analyze table tableName
索引提示
select * from table_name <use|ignore|force> index(index_name) where ...
- use:建议Mysql使用的索引,类似建议java调用gc,但不一定会用
- ignore:忽略指定索引
- force:强制使用索引
配置主从
1、master修改配置文件/etc/my.cnf
,在[mysqld]下增加
log-bin=mysql-bin
server-id=1
binlog-format=row
binlog-do-db=lyzz_image
2、master创建用户,专门用于复制操作,用于从节点连接主节点时使用,slave_ip为从节点IP
-- mysql 5.7 默认身份验证插件default_authentication_plugin是:mysql_native_password
CREATE USER 'master'@'slave_ip' IDENTIFIED WITH mysql_native_password BY '123456';
-- mysql 8.0 默认身份验证插件default_authentication_plugin是:caching_sha2_password
CREATE USER 'master'@'slave_ip' IDENTIFIED WITH caching_sha2_password BY '123456';
-- 为master用户授权
GRANT REPLICATION SLAVE ON *.* TO 'master'@'slave_ip';
-- 刷新权限
flush privileges;
-- 查看主节点binlog日志信息,记录FILE及POSITION
show master status;
3、slave修改配置文件/etc/my.cnf
,在[mysqld]下增加
log-bin=mysql-bin
server-id=2
binlog-format=row
replicate-do-db=lyzz_image
4、在Slave节点上设置主节点参数,然后开启主从同步
-- 设置主节点参数
CHANGE MASTER TO MASTER_HOST = '${MASTER_IP}',
MASTER_USER ='master',
MASTER_PASSWORD ='${MASTER_PASSWORD}',
MASTER_LOG_FILE ='${FILE}',
MASTER_LOG_POS = '${POSITION}',
get_master_public_key =1;
-- 开启同步
start slave;
-- 设置失败时清除同步配置
reset slave all;
5、查看主从同步状态show slave status;
,确认数据一致,且Slave_IO_Running
,Slave_SQL_Running
为Yes,Last_IO_Error
为空
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.0.227
Master_User: master
Master_Port: 3306
Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: lyzz_arch
Last_IO_Error:
Get_master_public_key: 1
6、其他配置:
不同步哪个数据库(在master[mysqld]):binlog-ignore-db=mysql
只同步哪个数据库(在master[mysqld]):binlog-do-db=lyzz_arch,其他库不同步
接收哪个库的binlog日志(在slave[mysqld]):replicate-do-db=lyzz_arch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通