MySQL操作笔记
mysql命令
MySQL注释符有三种:
1、#注释内容,表示单行注释 2、"-- 注释内容" (注意--后面有一个空格,注释到行尾,也是单行注释) 3、/注释内容/ ,可跨行注释 另外,需要注意以下几点: 1、 /* …. / 在大部分编程语言中都是注释,这个注释之中的语句是不被执行的。但是,在MySQL中为了保持兼容,比如从mysqldump导出的SQL语句能被其它数据库直接使用,它把一些特有的仅在MySQL上的语句放在 /! … */ 中,这样这些语句如果在其它数据库中是不会被执行,但在MySQL中它会执行。在这里,和!之间不能有空格。 2、 语句例如“/!50701 select * from test */;”,这里的50701表示假设数据库服务器是5.7.01以上版本(大于或等于),该语句才会被执行。
示例如下:
# select * from mysql.user;
select * from mysql.user ; -- 查询mysql.user表中的信息
/*
select * from mysql.user;
select * from mysql.user where ID=1;
*/
mysql 语句中含;但又不是以该分号表示语句结束时,就需要用到delimiter来修改命令结束符
例如
查看指定用户的权限
mysql权限列表
CREATE
Create_priv
数据库、表或索引
DROP
Drop_priv
数据库或表
GRANT OPTION
Grant_priv
数据库、表或保存的程序
REFERENCES
References_priv
数据库或表
ALTER
Alter_priv
表
DELETE
Delete_priv
表
INDEX
Index_priv
表
INSERT
Insert_priv
表
SELECT
Select_priv
表
UPDATE
Update_priv
表
CREATE VIEW
Create_view_priv
视图
SHOW VIEW
Show_view_priv
视图
ALTER ROUTINE
Alter_routine_priv
保存的程序
CREATE ROUTINE
Create_routine_priv
保存的程序
EXECUTE
Execute_priv
保存的程序
FILE
File_priv
服务器主机上的文件访问
CREATE TEMPORARY TABLES
Create_tmp_table_priv
服务器管理
LOCK TABLES
Lock_tables_priv
服务器管理
CREATE USER
Create_user_priv
服务器管理
PROCESS
Process_priv
服务器管理
RELOAD
Reload_priv
服务器管理
REPLICATION CLIENT
Repl_client_priv
服务器管理
REPLICATION SLAVE
Repl_slave_priv
服务器管理
SHOW DATABASES
Show_db_priv
服务器管理
SHUTDOWN
Shutdown_priv
服务器管理
SUPER
Super_priv
服务器管理
给用户授权
创建数据库,并导入数据
不进入mysql命令行执行操作命令
mysql -e可以不需要进入mysql命令行界面即可执行命令,例如下面这两个操作:
忘记root密码(5.7可用)
修改配置文件
vim /etc/my.cnf
在[mysqld]节点添加
skip-grant-tables
重启mysql 用空密码进入
mysql -uroot 执行下面的命令更新密码,authentication_string是5.7以上版本的密码字段,之前的版本为password
更新用户密码
用UPDATE直接编辑user表更新用户密码 ,password字段要看mysql版本,5.7以后的版本为authentication_string 登录MySQL。
部分操作示例
删除或查询指定时间前的sql。需要表中有可识别的时间字段。然后用interval做关键字,来指定间隔时间
DAY
YEAR
MONTH
HOUR
MINUTE
SECOND
SQL中interval的用法
interval作为函数时 当interval作为一个函数时,它被当做一个比较函数,即interval(),如interval(4,0,1,2,3,4,5,6),则在函数中,第一个数4作为被比较数,后面的0,1,2,3,4,5,6为比较数,然后将后面的数字依次与4进行比较,返回小于等于4的个数,所以上述结果为5,注意,只有将4后面的数字从小到大进行排列,interval函数才能正常使用,若排序混乱,可以使用,但会影响最终结果。
interval作为关键字时 当interval作为一个关键字时,表示为时间间隔,常用在date_add()、date_sub()函数中,常用于时间的加减法。
MySQL为字段添加默认时间
将字段类型设为TIMESTAMP
将默认值设为CURRENT_TIMESTAMP
添加一个字段,并记录每次更新时间,加上ON UPDATE CURRENT_TIMESTAMP(0),每次操作结束会以当前时间更新该字段
修改字段,不记录更新操作时间,去掉ON UPDATE CURRENT_TIMESTAMP(0)
添加字段时不记录更新操作时间,去掉ON UPDATE CURRENT_TIMESTAMP(0)
临时调整innodb_buffer_pool_size大小
innodb_buffer_pool_size大小查询存储过程和函数
yum 安装mysql 5.7之后,会在mysqld.log中记录临时密码,通过mysql -uroot -p 登录后要改密码。
where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误。where后面总要有语句,加上了1=1后就可以保证语法不会出错!
因为table中根本就没有名称为1的字段,所以该SQL等效于select * from table
SQL ORDER BY 关键字
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。 ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
SQL ORDER BY 语法
示例
now()函数
导出查询结果为excel
导出数据后直接通过excel打开可能会是乱码,是因为linux下导出默认是UTF-8格式,先用类似nodepad++编辑器打开tables.xls,然后转码为ANSI保存。就可以以通过excel打开。
以下为批量将当前目录下所有文件编码从GBK(ANSI)转为UTF-8
mysqldump 备份命令
-- -add-drop-table
在每个创建数据库表语句前添加删除数据库表的语句
-- -add-locks
备份数据库表时锁定数据库表
-- -all-databases
备份MySQL服务器上的所有数据库
-- -comments
添加注释信息
-- -compact
压缩模式,产生更少的输出
-- -complete-insert
输出完成的插入语句
-- -databases
指定要备份的数据库
-- -default-character-set
指定默认字符集
-- -force
当出现错误时仍然继续备份操作
-- -host
指定要备份数据库的服务器
-- -lock-tables
备份前,锁定所有数据库表
-- -no-create-db
禁止生成创建数据库语句
-- -no-create-info
禁止生成创建数据库库表语句
-- -password
连接MySQL服务器的密码
-- -port
MySQL服务器的端口号
-- -user
连接MySQL服务器的用户名
-q, --quick
加上 -q 后,不会把SELECT出来的结果放在buffer中,而是直接dump到标准输出中,顶多只是buffer当前行结果,正常情况下是不会超过 max_allowed_packet 限制的,它默认情况下是开启的。如果关闭该参数,则会把SELECT出来的结果放在本地buffer中,然后再输出给客户端,会消耗更多内存。
-w
指定备份条件
--opt
只备份结构,不备份数据
备份数据库及还原
备份
示例:
还原
还原时最好加上--default-character-set参数,指定编码格式跟原库一致,避免乱码
备份指定库时,使用--ignore-table=排除指定表不做备份,如果有个多,可以添加多个--ignore-table=
[[Xtrabackup]]备份及还原操作
定时备份脚本
mysqlimport命令
mysqladmin命令
参数
create:创建数据库
drop:删除数据库
debug:打开调试日志并记录于erro log中
status:显示简要状态信息
--sleep:设置间隔时长
--count:设置显示次数
extended-status:显示扩展信息,输出mysql的和状态蛮及赋值,相当于“show global status”
variables:显示mysqld的服务器变量
flush-hosts:清空主机相关缓存,DNS缓存,此前因连接错误次数过多被拒的主机列表缓存
flush-logs:日志滚动,只能滚动二进制日志和中继日志
refresh:相当于同时使用flush-hosts和flush-logs
flush-privileges:
reload:
flush-status
flush-threads
shutdown:
start-slave
stop-slave
processlist
ping
kill
示例:
mysqlshow命令
示例:
Mysql其它错误处理请参考[[MySQL错误处理记录]]
最后更新于