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为字段添加默认时间

  1. 将字段类型设为TIMESTAMP

  2. 将默认值设为CURRENT_TIMESTAMP

添加一个字段,并记录每次更新时间,加上ON UPDATE CURRENT_TIMESTAMP(0),每次操作结束会以当前时间更新该字段

修改字段,不记录更新操作时间,去掉ON UPDATE CURRENT_TIMESTAMP(0)

添加字段时不记录更新操作时间,去掉ON UPDATE CURRENT_TIMESTAMP(0)

临时调整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错误处理记录]]

最后更新于