Mysql5.7.20安装文档

一、Linxu下数据库的恢复和备份

当我们MySQL数据库保存重要数据的时候,备份工作极为重要。本文介绍如何使用mysqldump备份和恢复数据,使用该方法,可以将数据库中的数据备份成一个文本文件,也可将备份好的数据库迁移到另一台的服务器。(后面是实际操作的过程)

(1) 从命令行备份MySQL数据库

在Linux操作系统中,我们可以使用mysqldump命令进行备份。该命令将连接MySQL服务器并创建SQL转储文件,该文件包含了重新创建数据库所必需的所有SQL语句。该命令的基本语法如下:

$ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

[uname] 数据库用户名

[pass] 数据库密码

[dbname] 数据库名

[backupfile.sql] 数据库备份文件名

[--opt] mysqldump选项

例如:备份数据库Tuixin到20131112.sql文件,你可以简单地使用以下命令:

$ mysqldump -u root -p Tuixin > 20131112.sql

如果有必要一次导出所有的数据库,可使用--all-databases选项,命令如下:

$ mysqldump -u root -p --all-databases > 20131112.sql

如果mysql数据库较大,你可能希望能压缩mysqldump导出的SQL文件,此时仅需使用如下的备份命令,并通过管道连接到gzip,此时便可导出gzip文件。

$ mysqldump -u root -p Tuixin | gzip -9 > 20131112.sql.gz

解压缩方法如下:

$ gunzip 20131112.sql.gz

(2) 从命令行恢复MySQL数据库

通过上面的方法,我们已经将数据库Tuixin备份至20131112.sql文件,接下来,我们恢复Tuixin数据库:

* 在目标机器上创建相应的数据库名

* 使用mysql命令载入sql文件

$ mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

例如,我们现在恢复20131112.sql文件到Tuixin数据库:

$ mysql -u root -p Tuixin < 20131112.sql

如果是恢复压缩的备份文件,可遵循以下格式:

$ gunzip < [backupfile.sql.gz] | mysql -u [uname] -p[pass] [dbname]

如果是恢复已经存在的数据库,此时可使用mysqlimport命令,该命令的语法格式如下:

$ mysqlimport -u [uname] -p[pass] [dbname] [backupfile.sql]

实际操作步骤:

备份:

利用mysqldump的—all-databases参数可以一口气把你数据库root用户下的所有数据库一口气导出到一个sql文件里。然后,重装系统后使用source命令可以再一口气倒回来。

导出全部数据库mysqldump -uroot -p --all-databases > sqlfile.sql

此操作会把数据库服务器root用户下的所有数据库都导出来。如果回车后提示Enter Password:请输入你的mysql root密码。

 

导入:

1.登录mysal:

         mysql–u root –p

根据提示输入密码

然后:

         Source  备份文件的路径;

记得这句后面有分号哈。

二、MySQL5.7.20的下载

一、首先到官网下载吧:

https://www.mysql.com/downloads/

三、解压并安装:

#tar -xvf mysql-5.7.18-1.el6.x86_64.rpm-bundle.tar

解压后有如下rpm:

安装方式一:

       cd 到解压开的目录

       yum -y localinstall mysql*

安装方式二:

#rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm

可以采用这种一个包一个包的安装方式,但是本人不推荐。

四、启动并设置:

1、启动

Centos6的启动方法:

# service mysqld start

查看状态

# service mysqld status

Centos7的启动方法:

# systemctl start mysqld

查看状态:

# systemctl status mysqld

2、首次启动涉及的设置

这种方式安装好后,会再my.cnf文件中自动生成一个密码,执行看一下吧:

# cat /var/log/mysqld.log | grep password

2017-05-13T05:39:44.497086Z 1 [Note] A temporary password is generated for root@localhost: pKsO:Jin<4f%

密码就是这么复杂,复制吧,不然手输还容易出错。

登陆:#mysql -u root -p

Enter password:pKsO:Jin<4f%

登陆成功,但是这时候,还不能做任何事情。随便你做什么都会提示你:

ERROR 1820 (HY000): You must reset your passwordusing ALTER USER statement before executing this statement.

那就来reset吧

mysql> SET PASSWORD = PASSWORD('Mysql5720');

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

(密码过于简单,必须大写,小写,数字,符号)

mysql> SET PASSWORD = PASSWORD('Mysql5720%');

Query OK, 0 rows affected, 1 warning (0.00 sec)

CREATE USER 'root'@'%' IDENTIFIED BY 'bigdata@2016';

CREATE USER 'root'@'localhost' IDENTIFIED BY 'bigdata@2016';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  IDENTIFIED BY 'bigdata@2016';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'  IDENTIFIED BY 'bigdata@2016';

flush privileges;

好了,现在终于可以操作了:

mysql> create database roger;

Query OK, 1 row affected (0.01 sec)

mysql> use roger;

Database changed

mysql>

额外:一般自己装个mysql就是用来测试的,结果密码还那么麻烦,哪天忘记了都有可能,想要设置简单的密码,把密码安全级别设置低一点吧:

mysql> set global validate_password_policy=0;//0最低,1中级,2最强验证级别

Query OK, 0 rows affected (0.00 sec)

五、授权远程连接:

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Mysql5720%' WITH GRANT OPTION;

Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.01 sec)

这样,我们就可以在其他电脑上的mysql客户端远程连接linux上的mysql数据库了:(例如在win cmd里面)

C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>mysql -u root -pMysql5718% -h 192.168.231.8 -D roger

六、拓展:MySQL5.7.20的密码设置修改

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log。

一般可通过log_error设置

mysql> select @@log_error;
+---------------------+
| @@log_error         |
+---------------------+
| /var/log/mysqld.log |
+---------------------+
1 row in set (0.00 sec)

可通过# grep "password" /var/log/mysqld.log 命令获取MySQL的临时密码

2016-01-19T05:16:36.218234Z 1 [Note] A temporary password is generated for root@localhost: waQ,qR%be2(5

用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:

mysql> select user();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

如果只是修改为一个简单的密码,会报以下错误:

mysql>  ALTER USER USER() IDENTIFIED BY '12345678';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这个其实与validate_password_policy的值有关。

validate_password_policy有以下取值:

Policy

Tests Performed

0 or LOW

Length

1 or MEDIUM

Length; numeric, lowercase/uppercase, and special characters

2 or STRONG

Length; numeric, lowercase/uppercase, and special characters; dictionary file

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。

必须修改两个全局参数:

首先,修改validate_password_policy参数的值

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定。

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          8 |
+----------------------------+
1 row in set (0.00 sec)

validate_password_length参数默认为8,它有最小值的限制,最小值为:

validate_password_number_count
+ validate_password_special_char_count
+ (2 * validate_password_mixed_case_count)

其中,validate_password_number_count指定了密码中数据的长度,validate_password_special_char_count指定了密码中特殊字符的长度,validate_password_mixed_case_count指定了密码中大小字母的长度。

这些参数,默认值均为1,所以validate_password_length最小值为4,如果你显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4。如下所示:

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          8 |
+----------------------------+
1 row in set (0.00 sec)
 
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
 
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          4 |
+----------------------------+
1 row in set (0.00 sec)

如果修改了validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一个值,则validate_password_length将进行动态修改。

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          4 |
+----------------------------+
1 row in set (0.00 sec)
 
mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
|                                    1 |
+--------------------------------------+
1 row in set (0.00 sec)
 
mysql> set global validate_password_mixed_case_count=2;
Query OK, 0 rows affected (0.00 sec)
 
mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
|                                    2 |
+--------------------------------------+
1 row in set (0.00 sec)
 
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          6 |
+----------------------------+
1 row in set (0.00 sec)

当然,前提是validate_password插件必须已经安装,MySQL5.7是默认安装的。

那么如何验证validate_password插件是否安装呢?可通过查看以下参数,如果没有安装,则输出将为空。

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file    |       |
| validate_password_length             | 6     |
| validate_password_mixed_case_count   | 2     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
6 rows in set (0.00 sec)

七:附表:字符设置

[root@bianyi ~]# cat /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted

security risks 这是完整的一句话,放不下,分成两行了

symbolic-links=0

#default-character-set = utf8  在这个版本中,不要添加这一句,否则会引起字符设置冲突的问题,mysqld启动不了

character_set_server=utf8

init_connect='SET NAMES utf8'

[mysql]

default-character-set = utf8

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

default-character-set = utf8

[root@bianyi ~]#

八、安全快速修改Mysql数据库名的5种方法

1. RENAME DATABASE db_name TO new_db_name

这个。。这个语法在mysql
5.1.7中被添加进来,到了5.1.23又去掉了。

据说有可能丢失数据。还是不要用的好。

详见: http://dev.mysql.com/doc/refman/5.1/en/rename-database.html

2.如果所有表都是MyISAM类型的话,可以改文件夹的名字

关闭mysqld

把data目录中的db_name目录重命名为new_db_name

开启mysqld

3.重命名所有的表

代码如下:

CREATE DATABASE new_db_name;

RENAME TABLE db_name.table1 TO new_db_name.table1,

db_name.table2 TO new_db_name.table2;

DROP DATABASE db_name;

4. mysqldump导出数据再导入

代码如下:

mysqldump -uxxxx -pxxxx -h xxxx
db_name > db_name_dump.SQL

mysql -uxxxx -pxxxx -h xxxx -e “CREATE DATABASE new_db_name”

mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.SQL

mysql -uxxxx -pxxxx -h xxxx -e “DROP DATABASE db_name”

5.使用shell脚本重命名所有的表

代码如下:

#!/bin/bash

mysqlconn=”mysql -u xxxx -pxxxx -S
/var/lib/mysql/mysql.sock -h localhost”

olddb=”db_name”

newdb=”new_db_name”

#$mysqlconn
-e “CREATE
DATABASE $newdb”

params=$($mysqlconn -N -e “SELECT TABLE_NAME FROM
INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb'”)

for
name in $params; do

$mysqlconn -e “RENAME
TABLE $olddb.$name to $newdb.$name”;

done;

#$mysqlconn
-e “DROP
DATABASE $olddb”

就是方法3的优化版。

小编注:以上这些操作都是危险的,所以请在执行操作前,备份你的数据库!!

九、卸载mysql数据库

检查之前是否安装过mysql,删除之前安装的mysql

# rpm -qa | grep
mysql

# rpm -e
mysql-libs-5.1.71-1.el6.x86_64 --nodeps

# find / -name
mysql

# rm -rf …

注意:卸载不了就强制卸载,--nodeps --force

Mysql5.7.20安装文档的更多相关文章

  1. Linux rhel7 下MySQL5.7.18详细安装文档

    Linux rhel7 下MySQL5.7.18详细安装文档 本文安装MySQL5.7使用的是vm虚拟机rhel7操作系统 ,ftp文件传输是FileZilla3.27,远程连接xssh5.0 1 登 ...

  2. CentOS6.5下安装JDK1.7+MYSQL5.5+TOMCAT7+nginx1.7.5环境安装文档

    ----------------CentOS6.5下安装JDK1.7+MYSQL5.5+TOMCAT7+nginx1.7.5环境安装文档----------------------- [JDK1.7安 ...

  3. _00024 尼娜抹微笑伊拉克_云计算ClouderaManager以及CHD5.1.0群集部署安装文档V1.0

    笔者博文:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

  4. Oracle 12c RAC 静默安装文档

    参考文档: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs. ...

  5. Azkaban使用安装文档

    Azkaban使用安装文档 Azkaban简介 Azkaban的是什么 Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程.Az ...

  6. [转载]linux+nginx+python+mysql安装文档

    原文地址:linux+nginx+python+mysql安装文档作者:oracletom # 开发包(如果centos没有安装数据库服务,那么要安装下面的mysql开发包) MySQL-devel- ...

  7. linux centos7 安装虚拟Python环境,pyenv安装文档

    python多版本控制pyenv安装文档 1.在线安装: curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-i ...

  8. zabbix 4.04 安装文档 - 基于CentOS 7.6

    1    安装前准备: 1.1   安装JDK 卸载openjdk # rpm -qa | grep java # yum remove java-1.8.0-openjdk # yum remove ...

  9. ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档

    ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档 2015-10-21 12:51 525人阅读 评论(0) 收藏 举报  分类: Oracle RA ...

随机推荐

  1. linux笔记【简版】

    1.linux简介 kernel 内核 shell 外壳 (类似win上的cmd) sh,Bash:#root,$user csh:#root,%user filesystem 文件管理系统 2.优势 ...

  2. [LeetCode题解]234. 回文链表 | 快慢指针 + 反转链表

    解题思路 找到后半部分链表,再反转.然后与前半部分链表比较 代码 /** * Definition for singly-linked list. * public class ListNode { ...

  3. Spring第四天,BeanPostProcessor源码分析,彻底搞懂IOC注入及注解优先级问题!

  4. 网络拓扑实例之VRRP负载分担(四)

    组网图形  VRRP负载分担简介 负载分担方式是指多台设备同时承担业务,因此负载分担方式需要两个或者两个以上的虚拟路由器,每个虚拟路由器都包括一个Master路由器和若干个Backup路由器,各虚拟路 ...

  5. ABBYY FineReader中的其他格式

    ABBYY FineReade是一款功能强大的PDF编辑转换器,在内置任务窗口,您可以将 PDF 或图片转换成常见的格式(*.pptx. *.odt. *.html.*.epub.*.fb2.*.rt ...

  6. 2个快速制作完成一幅思维导图的iMindMap思维导图用法

    随着思维导图的流行,与其相关的思维导图制作软件如雨后春笋,纷纷进入我们的视野中,更让人难以选择.那想要入门的萌新该如何开始这个新的旅途呢? 各式各样的思维导图制作软件当中,有一个软件得到了大家一致的好 ...

  7. CorelDRAW常用工具之橡皮擦工具

    很多作图以及设计软件都会自带橡皮擦工具,但对于专业做平面设计的小伙伴来说,普通的橡皮工具肯定是无法满足日常作图需求的,今天来看看CorelDRAW的橡皮擦能玩出什么花样来. 1.擦除对象 CorelD ...

  8. 返回当前类所有常量的Key=>value 集合

    <?php class Test { const A = '1'; const B = '2'; const C = '3'; const D = '4'; const E = '5'; con ...

  9. spring框架:(一) 技术说明(技术介绍,技术优势以及发展史等)

    一.技术说明(技术介绍,技术优势以及发展史等) 1.1.什么是spring 1.2.spring由来(发展历程) 1.3.spring核心 1.4.spring优点 1.5.spring体系结构 1. ...

  10. LGOJ3101 [USACO14JAN]滑雪等级Ski Course Rating

    LGOJ3101 [USACO14JAN]滑雪等级Ski Course Rating [问题描述] The cross-country skiing course at the winter Mool ...