常用操作
mysql备份:
--整库备份(排除mysql、information_schema等库)
mysql -e "show databases;" -uroot -p| grep -Ev "Database|information_schema|performance_schema|mysql|test" | xargs mysqldump -uroot -p --databases > /opt/mysql_bak.sql
--指定库备份 docker exec 容器ID mysqldump -uroot -p密码 --databases 库名 > 库名.sql
--仅导出表和数据 mysqldump -h localhost -uroot -p123456 database table > dump.sql --导出整个数据库结构(不包含数据) mysqldump -h localhost -uroot -p123456 -d database > dump.sql --导出单个数据表结构(不包含数据) mysqldump -h localhost -uroot -p123456 -d database table > dump.sql --导出存储过程和函数 docker exec 容器ID mysqldump -R -ndt 库名 -u root -p123456 > test.sql
--导入sql时指定utf-8字符集
mysql -u root -p123456 --default-character-set=utf8 databasename < xxx.sql
--创建用户: create user 'username'@'%' IDENTIFIED BY 'password'; --创建库: create database if not exists database_name default character set = 'utf8'; --授权用户单个库所有权限: GRANT all ON database_name.* to username@'%'; --修改用户密码: ALTER USER 'root'@'%' IDENTIFIED BY 'mysql,.1q';
update user set password=password('123') where user='root' and host='localhost';
--取消授权:
revoke all on database_name.* from username@'%'; --查看用户权限: show grants for username; --使用Navicat Premium软件连接库测试
注意:在操作 mysql 库做用户的增删修改的时候,操作完毕的时候最好使用 flush privileges 命令刷新一下权限。否则可能会修改不生效
常见问题:
1、表名查询不区分大小写
在my.cnf或my.ini配置文件中[mysqld]添加如下内容
lower_case_table_names=0
然后重启mysql服务
日志记录
1、开启日志记录 show variables like 'general_log'; -- 查看日志是否开启 show variables like 'log_output'; -- 看看日志输出类型 table或file show variables like 'general_log_file'; -- 看看日志文件保存位置 set global general_log_file='tmp/general.lg'; -- 设置日志文件保存位置 set global general_log=ON/OFF; -- 开启/关闭日志功能 set global log_output='table'; -- 设置输出类型为 table set global log_output='file'; -- 设置输出类型为file 2、查询 SELECT * from mysql.general_log ORDER BY event_time DESC; 3、清空表(delete对于这个表,不允许使用,只能用truncate) truncate table mysql.general_log;
慢查询
show variables like "%slow%"; //查看慢查询设置 set slow_query_log='ON'; //启用慢查询 set global long_query_time=2; //设置成2秒,加上global,下次进mysql已然生效