在linux上的mysql命令
mysql -e "mysql内部命令" #可在外部显示myslq内的输出,-e可跟多条命令用;隔开
在mysql内的mysql命令
system linux命令 #在mysql内执行linux的命令
source /备份文件 #在mysql内导入备份文件
set names 字符集 #指定字符集
desc 表名; #查看表结构
drop user '用户名'@'来源地址'; #删除用户
rename user '原主机名'@'源地址' to '新主机名'@'新地址'; #修改主机名地址
select user(); #查看当前登录用户
set password for '用户名'@'来源地址'=password('新密码'); #修改用户密码
set password=password('新密码'); #修改已登录用户的密码
show grants; #查看登录用户权限 show grants for '用户名'@'来源地址'; #查看指定用户权限
show variables; #查看mysql权限配置 my.cnf的配置 show variables like '单项配置'; #匹配其中一项权限查看
select count(*) from 表; #查看一个表有多少行内容
select distinct id from 库名.表名; #去重 id去重
select * from users order by 年龄 asc; #order by 按年龄序列查看users表 asc按升序查看年龄表 desc倒序
select * from users limit 3; #指定查询内容的行数 3为前三行 1,4为1到4行
mysql日志
mysql日志分为:*错误日志,通用查询日志,*二进制日志(binlog),*慢查询日志
错误日志
vim my.cnf [mysqld] log-error = /data/3306/mysql_error3306.err #指定错误日志文件 重启服务即开启错误日志
通用日志 #通用日志记录了mysql的每一项操作,不需要开启,开启过于占用资源 如果已开启通用日志将其关掉
vim my.cnf [mysqld] log = on #如果开启 请关闭 log = /usr/local/mysql/data/mysql_general.log
二进制日志 #必须开启 用于增量备份 主从复制 有3种记录模式
vim my.cnf [mysqld] log-bin = /data/3306/mysql-bin #开启binlog 并且制定binlog记录在哪 默认就有 #binlog_format=mixed #binlog记录模式 默认为mixed
binlog三种记录模式:
statement level模式:每一条修改数据的sql语句都记录到binlog里
优点;不需要记录每一行的数据变化,减少binlog日志量,节约IO提高性能
缺点:由于他记录的是执行语句,所以为了让这些语句在slave端也能执行,必须加入上下文相关信息
row level模式:记录每一条数据执行的语句,既当一条sql语句执行多条数据,他不记录sql语句,而是记录每条语句的执行命令
优点:记录下每一行数据修改的细节
缺点:binlog日质量过大
mixed模式: 前两种模式的结合, #一般建议使用此种模式
在线修改模式生效
立即生效
set session binlog_format = "statement"; #修改为statement模式 set session binlog_format = "row"; #修改为row模式 set session binlog_format = "mixed"; #修改为mixed模式 show variables like "binlog_format"; #查看模式
全局生效 #永久生效 需要重新登入mysql 不需要重启 set global binlog_format = "statement"; #修改为statement模式 set global binlog_format = "row"; #修改为row模式 set global binlog_format = "mixed"; #修改为mixed模式
慢查询日志
记录所有执行时间超过指定秒的语句
long_query_time = 1 #超过1秒执行的sql语句 log-slow-queries = mysql_slow.log #记录到哪个文件 log_queries_not_using_indexes #记录没有使用索引的语句