1. 下载包
wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
2. 解压
tar xxvf mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.12-linux-glibc2.5-x86_64 /usr/local/mysql
3. 初始化
useradd -M -s /sbin/nologin mysql
mkdir -p /data/mysql
chown mysql /data/mysql
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --datadir=/data/mysql
注意,这一步最后一行会有一个提示
[Note] A temporary password is generated for root@localhost: B*s1i(*,kXwg llRhYDpFa6>8 //jHxl,!<3iQ
最后面的字符串为root密码。
./bin/mysql_ssl_rsa_setup --datadir=/data/mysql
4. 拷贝配置文件和启动脚本
cp support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf //编辑或者修改
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
socket = /tmp/mysql.sock
cp support-files/mysql.server /etc/init.d/mysqld
vi /etc/init.d/mysqld //编辑或者修改
basedir=/usr/local/mysql
datadir=/data/mysql
5. 启动服务
/etc/init.d/mysqld start
6. 设置root密码
使用初始化密码登录
/usr/local/mysql/bin/mysql -uroot -p'B*s1i(*,kXwg' //进入后直接设置密码
mysql>set password = password('mypass'); //一定要设置一下新密码
退出来,再使用新的密码登录就可以了
或者
SET PASSWORD = PASSWORD('HycK@12345.CoM');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
还有一种情况,就是不知道初始化密码
vi /etc/my.cnf
在[mysqld]下面增加一行
skip-grant-tables
重启 /etc/init.d/mysqld restart
/usr/local/mysql/bin/mysql -uroot
mysql> update user set authentication_string=password('123333') where user='root';
退出来后,更改my.cnf,去掉刚加的 skip-grant-tables
重启 /etc/init.d/mysqld restart
此时就可以使用新的密码了。
数据库时差 相差8小时
官网原话:
This variable was added in MySQL 5.7.2. Before 5.7.2, timestamps in log messages were written using the local system time zone by default, not UTC. If you want the previous log message time zone default, set log_timestamps=SYSTEM.
在MySQL 5.7.2 新增了 log_timestamps 这个参数,该参数主要是控制 error log、genera log,等等记录日志的显示时间参数。
在 5.7.2 之后改参数为默认 UTC 这样会导致日志中记录的时间比中国这边的慢,导致查看日志不方便。修改为 SYSTEM 就能解决问题
SHOW GLOBAL VARIABLES LIKE 'log_timestamps';
+----------------+--------+
| Variable_name | Value |
+----------------+--------+
| log_timestamps | UTC |
+----------------+--------+
SET GLOBAL log_timestamps = SYSTEM;
Query OK, 0 rows affected (0.00 sec)
SHOW GLOBAL VARIABLES LIKE 'log_timestamps';
+----------------+--------+
| Variable_name | Value |
+----------------+--------+
| log_timestamps | SYSTEM |
+----------------+--------+
增量备份
mysqlbinlog e:/mysqldb/logbin.000001
mysql 对于你的每一次操作 都会记录一次时间 同时 给你分配一个位置 (pos)
换句话说 以后我们恢复 可以根据时间点来恢复 或者根据位置来恢复
比如说 我们把一个表个drop 了 那么我们只要把表恢复到 drop之前就好了
时间点恢复
我们可以画个流程图
logbin.000001
insert ...... 3 2013-07-23 17:57:00
update ..... 4 2013-07-23 17:59:00
insert ...... 100 2013-07-23 19:57:00
drop ... 101 2013-07-23 20:57:00
恢复的话可以这么写
mysqlbinlog --stop-datatime="2013-07-23 20:50:00" e:/mysqldb/logbin.000001
上面这句的意思是 一直恢复到 2013-07-23 20:50:00 停止
mysqlbinlog --start-datatime="2013-07-23 20:50:00" e:/mysqldb/logbin.000001
上面这句的意思是 从2013-07-23 20:50:00 开始恢复
按照位置来恢复
mysqlbinlog --stop-position="100" e:/mysqldb/logbin.000001 |
上面这个语句意思是 恢复到100的位置
真实性恢复
按照位置恢复
mysqlbinlog --stop-position=4590 e:/mysqldb/logbin.000001 | mysql -uroot -p
按照时间恢复
mysqlbinlog --stop-datetime="2013-07-24 18:17:19" e:/mysqldb/logbin.000001 | mysql -uroot -p
可以控制从什么时候开始 到什么是结束
mysqlbinlog --start-position=4 --stop-position=106 yueliangd
ao_binglog.000001 > c:\test1.txt