1、只有拥有特定权限的用户才能执行特定的操作。就好像我们在现实生活中,一般没有权利进入军事禁区,除非我们被某个很有权利并且可以指定其他人进入军事基地的人赋予了进入军事禁区的权利。

命令:

GRANT privileges ON dbname.tableanme TO 'username'@'host' identified by ‘密码’;

赋权的同时并创建用户,并设置用户密码

2、ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 43. Created with MySQL 5的解决方案。

错误是由于你曾经升级过数据库,升级完后没有使用
mysql_upgrade升级数据结构造成的。
解决办法:
使用mysql_upgrade命令
root@localhost ~]# mysql_upgrade -u root -p 13456

3、创建用户:

CREATE USER 'username'@'host' [IDENTIFIED BY 'password'];

username表示要创建的用户名;

host表示被指定登录的主机名,可为指定主机的IP地址,本地用户用localhost表示;若要允许外网IP地址访问,可用通配符%表示任意IP地址。

例子:CREATE USER  'john'@'localhost' IDENTIFIED BY '123';

3.2修改用户密码

alter  user  'username'@'hostname' identified by 'password'; 首次安装完msyql数据库,修改账号密码

3.3删除mysql表中的所有数据,清空表数据

delete  from  database.table;

4、创建数据库并指定字符集

create database dbname   default charset utf8;

5、在shell环境执行MySQL命令

mysql -uroot -p  -e "show character set\G;"   查看所有的字符集

6、只查看某个表内容的前10行limit 10

select uid,uname,realname,tel,email from uPwd_12306 limit 10;

7、备份原有数据库数据内容

mysqldump -uroot -p  --no-create-info(不要创建create table语句)  --extended-insert (使用包含几个values列表的多行insert语句,导入数据速度快) --default-character-set=latin1(按照原有字符集导出数据,这样就不会保存为乱码)  dbname > 自定义.sql

8、查看字符集的变量设置

show variables like 'character_set%';

9、删除用户:

drop user '用户名'@'ip地址';

drop user命令会删除用户以及对应的权限,执行命令后你会发现mysql.user表和mysql.db表的相应记录都消失了。

10、在shell命令行执行mysql语句

mysql -uroot -psecure(密码)   MF(数据库)  -e  'select * from uPwd_12306(表)'

11、断开mysql的从数据库同步方法,先进入主数据库关闭二进制日志

  mysql> set   sql_log_bin=off;

  mysql> alter table t1 engine=blackhole;    将t1表存储引擎改为黑洞,不存储数据内容

  mysql>set  sql_log_bin=on;  改完之后,再将bin_log日志功能开启即可

 

mysql乱码恢复完整过程

1):导出表结构

mysqldump –uroot   --default-character-set=latin1 -d apple> appletable.sql

2):编辑appletable.sql 将latin1修改成utf8

vim appletable.sql 修改所有latin1为utf8

3):确保数据库不再更新,导出所有数据

mysqldump  -uroot p123456 --quick --no-create-info --extended-insert --default-character-set=latin1 apple>appledata.sql

 

参数说明:

--quick:用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有行,并输出当前cache到内存中

--no-create-info:不要创建create table语句

--extended-insert:使用包括几个values列表的多行insert语法,这样文件更小,IO也小,导入数据时会非常快

--default-character-set=latin1:按照原有字符集导出数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码

4):打开appledata.sql 将SET NAME latin1 修改成SET NAME utf8

vim appledata.sql

/*!40101 SET NAMES utf8 */;

5):重新建库

mysql> create database apple default charset utf8;

6):建立表,导入我们之前导出的表的数据库

mysql –uroot p123456 apple <appletable.sql

7):导入数据

mysql -uroot -p123456 apple <appledata.sql

编辑my.cnf文件,跳过密码登陆,关闭密码审计策略

在【mysqld】文件末尾添加以下内容: 
  skip-grant-tables
  plugin-load=validate_password.so
  validate-password=OFF
保存退出

xtrabackup工具备份mysql数据库

1、下载安装包

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/Percona-XtraBackup-2.4.9-ra467167cdd4-el7-x86_64-bundle.tar 

2、解压并安装

yum -y install percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

---> Package percona-xtrabackup-24.x86_64 0:2.4.9-1.el7 will be installed
--> Processing Dependency: perl(DBD::mysql) for package: percona-xtrabackup-24-2.4.9-1.el7.x86_64

报错,需要安装perl-DBD-MySQL。而perl-DBD-MySQL.x86_64 0:4.023-6.el7 安装包依赖这三个包mysql-community-common.x86_64 0:5.7.28-1.el7                 mysql-community-libs.x86_64 0:5.7.28-1.el7                 mysql-community-libs-compat.x86_64 0:5.7.28-1.el7。更新本机的Centos的yum源及epel源为阿里最新的yum源,备份原有的yum源。再次使用yum  install percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm 进行安装即可解决依赖关系。

3、修改my.cnf文件

比如在/etc/my.cnf的[mysqld] 下添加datadir=/usr/local/mysql/data,然后重启mysql

4、全量备份

innobackupex  --defaults-file=/etc/my.cnf  --user=root --password=密码   --use-memory=4G   /tmp/backup数据备份存放路径   &>>/tmp/db_backup.log数据备份日志输出文件

例如:innobackupex --user=root --password=P@zzw0rd  /root/linshi  &>>/root/linshi/db_backup.log

innobackupex  --user=root  --password=P@zzw0rd  --no-timestamp  /root/linshi/full  &>>/root/linshi/db_backup.log      自定义全备文件存放目录名称为full

5、备份还原

停止mysql,删除数据:rm -rf /var/lib/mysql/*

innobackupex  --copy-back  /root/linshi/full

chown +R mysql.mysql /var/lib/mysql

systemctl start msyqld

mysql -uroot -p回车输入密码进行登陆即可。

6、创建增量备份和还原

 使用—incremental创建增量备份

innobackupex --user=root  --password=密码  --incremental /增量1路径  --incremental-basedir=全备路径  后面指定在哪个全备上进行增量备份

例如:innobackupex --user=root  --password=P@zzw0rd  --incremental  /root/linshi/db_backup  --incremental-basedir=/root/linshi/full  &>>/root/linshi/db_backup.log

测试:

停止mysql,删除数据rm rf /var/lib/mysql/*

还原增量备份

增量备份的恢复比全备要复杂一点,第一步是在所有备份目录下重做已提交的日志,如:

innobackupex --apply-log --redo-only BASE-DIR

innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1

innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2

注意:如果仅有一份增量备份,第2条语句忽然

其中BASE-DIR是指全备目录,INCREMENTAL-DIR-1是指第一次的增量备份,INCREMENTAL-DIR-2是指第二次的增量备份,以此类推。

这里要注意的是:最后一步的增量备份并没有--redo-only选项!

以上语句执行成功之后,最终数据在BASE-DIR(即全备目录)下。

第一步完成之后,我们开始第二步:回滚未完成的日志:

innobackupex --apply-log BASE-DIR

上面执行完之后,BASE-DIR里的备份文件已完全准备就绪,最后一步是拷贝:

innobackupex --copy-back BASE-DIR

恢复mysql权限 chown –R mysql.mysql /var/lib/mysql/

最后启动systemctl start mysqld

检验数据是否恢复正常

MySQL增/全量备份-percona

 
 
 

percona-xtrabackup 只能对本地mysql数据库进行备份,故需与被备份数据mysql安装在同一台主机上。
由于该软件只会备份数据,不会备份log_bin日志,但会显示当前备份的位置,故如用备份恢复,将需重新配置数据库 主从/主主同步。

安装包

percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz:

官网下载地址:
https://www.percona.com/downloads/XtraBackup/LATEST/

软件安装
  1. # 解压即安装
  2. cd /data/
  3. tar -zxvf percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz
全量备份
  1. # 创建全量备份存储文件夹
  2. mkdir -p /data/mysql_backup/full/
  3. # 开始备份,生成全量备份文件夹在/data/backup/2018-10-19_03-40-04/
  4. /data/percona-xtrabackup-2.4.9-Linux-x86_64/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password=***** /data/mysql_backup/full/
  5. # 从以上命令的日志中获取同步位置,例如如下显示为 bin_log.000002' '428234578'
  6. MySQL binlog position: filename 'bin_log.000002', position '428234578'
  7. 180918 14:55:51 [00] Writing backup-my.cnf
  8. 180918 14:55:51 [00] ...done
  9. 180918 14:55:51 [00] Writing xtrabackup_info
  10. 180918 14:55:51 [00] ...done
  11. xtrabackup: Transaction log of lsn (1068407093) to (1068407102) was copied.
  12. 180918 14:55:51 completed OK!
增量备份
  1. # 创建增量备份文件夹
  2. mkdir -p /data/mysql_backup/increment/
  3. # --incremental表示增量备份,--incremental-basedir配置为以哪个备份为基础,可以全量为基础,也可以增量为基础。本次生成增量备份文件在:/data/mysql_backup/increment/2018-10-19_06-02-42/
  4. innobackupex --user=root --password=***** --incremental --incremental-basedir=/data/mysql_backup/full/2018-10-19_03-40-04/ /data/mysql_backup/increment/
恢复
  1. # 恢复前,需先停止数据库
  2. service mysql stop
  3. # 恢复全量备份
  4. # 将原mysql数据文件夹改名,该路径在/etc/my.cnf datadir中有定义,以下假设原数据目录为/data/mysql/data/
  5. mv /data/mysql/data/ /data/mysql/data_20181019
  6. mkdir -p /data/mysql/data/
  7. # 让备份文件夹准备恢复(同步已经提交的事务及回滚未提交的事务至数据文件)
  8. innobackupex --defaults-file=/etc/my.cnf --user=root --password=***** --apply-log --use-memory=4G /data/mysql_backup/full/2018-10-19_03-40-04/
  9. # 开始恢复
  10. innobackupex --defaults-file=/etc/my.cnf --user=root --password=***** --copy-back /data/mysql_backup/full/2018-10-19_03-40-04/
  11. # 修改权限
  12. chown -R mysql:mysql /data/mysql/data/
  13. # 全量+增量恢复。需执行以下命令,将增备数据全部恢复到全备文件夹中,以下假设有两次增备
  14. # 1.让全备文件夹同步已经提交的事务至数据文件
  15. innobackupex --apply-log --redo-only /data/mysql_backup/full/2018-10-19_03-40-04/
  16. # 2.让增备1同步已经提交的事务至全备数据文件(--redo-only:合并已提交事务,不合并回滚事务,避免增备之间数据无法衔接)
  17. innobackupex --apply-log --redo-only /data/mysql_backup/full/2018-10-19_03-40-04/ --incremental-dir=/data/mysql_backup/increment/2018-10-19_06-02-42/
  18. # 3.让增备2同步已经提交的事务及回滚未提交的事务至全备数据文件,注意最后次增量不需加 --redo-only 参数
  19. innobackupex --apply-log /data/mysql_backup/full/2018-10-19_03-40-04/ --incremental-dir=/data/mysql_backup/increment/2018-10-20_08-00-00/
  20. # 此时该全备文件夹已包含所有增量备份数据,依次按以上全备恢复命令,可恢复数据。
启动数据库,检查数据是否OK
  1. service mysql start
附备份脚本
  1. #!/bin/sh
  2. ##### ###### ###### ###### ###### ###### ###### #
  3. # 1、每7天一次全备,每天一次增量
  4. # 2、备份保留60天
  5. ##### ###### ###### ###### ###### ###### ###### #
  6. export PATH=$PATH:/percona/bin
  7. INNOBACKUPEX_CMD=/percona/bin/innobackupex
  8. MYSQL_CMD="--host=127.0.0.1 --user=root --password='********' --port=3306"
  9. MYSQL_UP="--user=root --password='********' --port=3306 --host=127.0.0.1"
  10. TMPLOG="/mysql_bak/backup/innobackupex.$$.log"
  11. MY_CNF=/etc/my.cnf
  12. BACKUP_DIR=/mysql_bak/backup
  13. FULLBACKUP_DIR=$BACKUP_DIR/full
  14. INCRBACKUP_DIR=$BACKUP_DIR/incre
  15. FULLBACKUP_INTERVAL=604800
  16. KEEP_FULLBACKUP=4
  17. logfile=/mysql_bak/backup/logs/backup.`date +%Y%m%d%H%M`.log
  18. STARTED_TIME=`date +%s`
  19. echo "----------------------------"
  20. echo "开始备份于: `date +%F' '%T' '%w`"
  21. mkdir -p $FULLBACKUP_DIR
  22. mkdir -p $INCRBACKUP_DIR
  23. mkdir -p /mysql_bak/backup/logs
  24. LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1`
  25. LATEST_FULL_BACKUP_CREATED_TIME=`stat -c %Y $FULLBACKUP_DIR/$LATEST_FULL_BACKUP`
  26. if [ "$LATEST_FULL_BACKUP" -a `expr $LATEST_FULL_BACKUP_CREATED_TIME + $FULLBACKUP_INTERVAL + 5` -ge $STARTED_TIME ] ; then
  27. echo -e "完全备份$LATEST_FULL_BACKUP未过期,将根据$LATEST_FULL_BACKUP名字作为增量备份目录命名"
  28. echo " "
  29. NEW_INCRDIR=$INCRBACKUP_DIR/$LATEST_FULL_BACKUP
  30. mkdir -p $NEW_INCRDIR
  31. LATEST_INCR_BACKUP=`find $NEW_INCRDIR -mindepth 1 -maxdepth 1 -type d | sort -nr | head -1`
  32. if [ ! $LATEST_INCR_BACKUP ] ; then
  33. INCRBASEDIR=$FULLBACKUP_DIR/$LATEST_FULL_BACKUP
  34. echo -e "增量备份将以$INCRBASEDIR作为备份基础"
  35. echo " "
  36. else
  37. INCRBASEDIR=$LATEST_INCR_BACKUP
  38. echo -e "增量备份将以$INCRBASEDIR作为备份基础"
  39. echo " "
  40. fi
  41. echo "使用$INCRBASEDIR作为基础做新的增量备份."
  42. $INNOBACKUPEX_CMD --defaults-file=$MY_CNF --use-memory=8G $MYSQL_CMD --incremental $NEW_INCRDIR --incremental-basedir $INCRBASEDIR > $TMPLOG 2>&1
  43. else
  44. echo "*********************************"
  45. echo -e "正在执行全新的完全备份...请稍等..."
  46. echo "*********************************"
  47. $INNOBACKUPEX_CMD --defaults-file=$MY_CNF --use-memory=8G $MYSQL_CMD $FULLBACKUP_DIR > $TMPLOG 2>&1
  48. fi
  49. cat $TMPLOG > $logfile
  50. if [ -z "`tail -1 $TMPLOG | grep 'innobackupex: completed OK!'`" ] ; then
  51. echo "$INNOBACKUPEX命令执行失败:"; echo
  52. echo -e "---------- $INNOBACKUPEX_PATH错误 ----------"
  53. cat $TMPLOG
  54. rm -f $TMPLOG
  55. exit 1
  56. fi
  57. THISBACKUP=`awk -- "/Backup created in directory/ { split( \\\$0, p, \"'\" ) ; print p[2] }" $TMPLOG`
  58. rm -f $TMPLOG
  59. echo -n "数据库成功备份到:$THISBACKUP"
  60. LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1`
  61. echo -e "必须保留$KEEP_FULLBACKUP份全备和全备$LATEST_FULL_BACKUP以后的所有增量备份."
  62. echo -e "寻找过期的全量备份文件并删除">>$logfile
  63. for efile in $(/usr/bin/find $FULLBACKUP_DIR/ -mtime +60)
  64. do
  65. if [ -d $efile ]; then
  66. rm -rf $efile
  67. echo -e "删除过期全量备份文件:$efile" >>$logfile
  68. elif [ -f $efile ]; then
  69. rm -rf $file
  70. echo -e "删除过期全量备份文件:$efile" >>$logfile
  71. fi;
  72. done
  73. echo -e "寻找过期的增量备份文件并删除">>$logfile
  74. for efile in $(/usr/bin/find $INCRBACKUP_DIR/ -mtime +60)
  75. do
  76. if [ -d $efile ]; then
  77. rm -rf $efile
  78. echo -e "删除过期增量备份文件:$efile" >>$logfile
  79. elif [ -f $efile ]; then
  80. rm -rf $file
  81. echo -e "删除过期增量备份文件:$efile" >>$logfile
  82. fi;
  83. done
  84. echo "完成于: `date +%F' '%T' '%w`"
  85. exit 0

 

mysql数据库简单补充的更多相关文章

  1. mysql数据库简单一些简单操作和总结

    1. mysql 数据库操作方法: 进入数据库 mysql -uroot -p 退出 quite exit 默认引擎 innodb 查看版本 select verison(); 查看时间 select ...

  2. python连接mysql数据库简单例子

    今天用pyhton2连接本地的mysql数据库,总的来说比较简单,但还是遇到一些小问题 代码如下: # -*- coding: utf-8 -*- import os import MySQLdb i ...

  3. php类模块引擎PDO操作MySQL数据库简单阐述

    PDO是什么呢? 通俗说就是别人写的一个“数据库操作工具类”,它非常强大,可以应对市面上几乎所有主流数据库, 具体应用时候有这样一个关系: 即,要操作某种数据,就得去“打开”对应的pdo引擎. 在ph ...

  4. PHP+mysql数据库简单分页实例-sql分页

    前几天冷月写了一篇博文<php基础编程-php连接mysql数据库-mysqli的简单使用>,很多小伙伴在学习后都知道了php与mysql数据库的连接,今天冷月分享一个简单的分页实例 首先 ...

  5. MySQL 数据库 简单操作命令 (部分总结)

    1.查看进程方式查看数据库 ps - ajx|grep mysql 2.登录 MySQL mysql -u用户名 -p密码 3.开启服务 sudo service mysql start 4.停止服务 ...

  6. mysql数据库简单入门

    1.xampp  跨平台 优点:兼容性高 2. apache(服务器) 著名的集成环境(也叫集成安装包) 功能:一般在网站上运行,优点:稳定 缺点:性能上有瓶颈 nginx 优点:快 3. mysql ...

  7. MySQL数据库简单使用

    一.入门语句: 1.连接服务器: 命令:cd 安装目录\bin mysql -uroot -p 接着输入密码 ( 具体的是:mysql -u username-p password ) 远程连接MyS ...

  8. mysql数据库----索引补充

    1.索引 索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据.对于索引,会保存在额外的文件中. 2.索引种类 普通索引:仅加速查询 唯一索引:加速查询 + 列值唯一(可以有 ...

  9. MySQL数据库简单操作

    title date tags layout MySQL简单操作 2018-07-16 Linux post 登录mysql mysql -h 主机名 -u 用户名 -p 查看所有数据库 show d ...

随机推荐

  1. linux之信息查看

    在使用Linux操作系统的时候,有时候会需要了解当前使用的系统版本信息,特别是在给别人进行服务器部署运维的时候,准确的系统版本信息至关重要 查看linux内核版本信息: cat  /proc/vers ...

  2. Vue+axios 拦截,超时登录问题

    axios.interceptors.request.use(config => config, error => Promise.reject(error)); axios.interc ...

  3. javascript中的数据渲染与提取

    table数据 <div id="tableDiv" style="overflow-x: scroll"> <table class=&qu ...

  4. 超详细思路讲解SQL语句的查询实现,及数据的创建。

    最近一直在看数据库方面的问题,总结了一下SQL语句,这是部分详细的SQL问题,思路讲解: 第一步:创建数据库表,及插入数据信息 --Student(S#,Sname,Sage,Ssex) 学生表 CR ...

  5. django优化--ORM优缺点

    谈Django绕不开ORM ORM : ORM概念,ORM特点,ORM 的优点,ORM 的缺点 orm : 对象关系映射 (Object Relational Mapping) ,用于实现面向对象编程 ...

  6. ThinkPHP依赖注入

    D:\wamp64\www\thinkphp5.1\tp5.1\application\index\controller\Demo1.php文件 <?php namespace app\inde ...

  7. 用ant打包

    Eclipse 内置了 Ant . Ant 是一种类似于批处理程序的软件包,它主要繁琐的工作是编写和调试自动处理脚本(一个 XML 文件),但只要有了这个脚本,我们就可以一键完成所有的设定工作. 本节 ...

  8. 关于Linux单机、集群部署FastDFS分布式文件系统的步骤。

    集群部署:2台tarcker服务器,2台storage服务器. 192.168.201.86   ---------(trackerd+storage+nginx) 192.168.201.87   ...

  9. 010-SaltStack及SaltStack Web UI安装部署

    saltstack web uiweb平台界面 saltapi项目主页:http://salt-api.readthedocs.org/en/latest/ halite 项目主页:https://g ...

  10. Fatal Error: Out of memory php内存溢出处理三种方法

    有时候我们在运行php程序的时候会发现 Fatal Error: Out of memory 这样的提示,这有可能是程序中用到了大量了变量和对象,导致分配的内存不够用. 修改php.ini文件里的me ...