mysql5.7系列教程(一)安装

体系结构

在这里插入图片描述

MySQL安装

说明:
1.本文档只要基于linux(CentOS6、CentOS7)系统
2.使用版本MySQL5.7.20
3.主要参考官方文档https://dev.mysql.com/doc/refman/5.7/en/

准备规划

注意点:
1.选择合适的版本:https://dev.mysql.com/downloads/
2.关闭SELINUX,避免不必要的麻烦

#vi /etc/selinux/config   
SELINUX=disabled                
#setenforce 0

3.防火墙设置
linux6

#vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
#service  iptables  restart   --重启

linux7

添加:
#firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启
#firewall-cmd --reload
#查看所有端口
#firewall-cmd --zone=public --list-ports

4.安装后(启动前),建议重新规划一下数据库目录,默认:/var/lib/mysql
5.开启logbin(类似oracle的归档日志,生产环境强力建议开启,并定期清理log)
6.验证rpm包 (如非正规渠道获取的rpm包)

shell> rpm --checksig package_name.rpm

主要文件路【MySQL Installation Layout for Linux RPM Packages from the MySQL Developer Zone】;
在这里插入图片描述
在MySQL 5.7.5之前,mysql_install_db创建一个默认选项文件my.cnf,该文件在基本安装目录中命名。此文件是从名为分发包中的模板创建的 my-default.cnf。从MySQL 5.7.18起,my-default.cnf不再包含在分发包中或由分发包安装。

二进制安装

安装依赖包:
#yum install libaio

#groupadd mysql
#useradd -r -g mysql -s /bin/false mysql
#cd /usr/local
#tar zxvf /path/to/mysql-VERSION-OS.tar.gz
#ln -s full-path-to-mysql-VERSION-OS mysql
#cd mysql
#mkdir mysql-files
#chmod 750 mysql-files
#chown -R mysql .
#chgrp -R mysql .
#bin/mysql_install_db --user=mysql    # MySQL 5.7.5
#bin/mysqld --initialize --user=mysql # MySQL 5.7.6 and up
#bin/mysql_ssl_rsa_setup              # MySQL 5.7.6 and up
#chown -R root .
#chown -R mysql data mysql-files
#bin/mysqld_safe --user=mysql &
# Next command is optional
#cp support-files/mysql.server /etc/init.d/mysql.server

yum离线安装

1.	配置yum源(本方法是适用于,无法连外网的用户,如果主机可以联网可直接跳过)
下载(mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar)解压后,放在/root/mysql/下
# vim /etc/yum.repos.d/mysql.repo
	[mysql]
name=mysql5.7
baseurl=file:///root/mysql/
enabled=1
gpecheck=0
建立依赖关系数据库文件repodata
#createrepo /root/mysql/
查看编译结果
# yum repolist
【其余同:yum在线安装 】

yum在线安装

1.配置yum源,选择并下载您的平台的发行包。
https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
https://repo.mysql.com//mysql57-community-release-el6-11.noarch.rpm
使用以下命令安装下载的版本软件包,替换 platform-and-version-specific-package-name 为下载的RPM软件包的名称:
# yum localinstall mysql57-community-release-el{version}-{version-number}.noarch.rpm -y
2.安装
yum install mysql-community-server -y
设置数据库目录(默认/var/lib/mysql  使用cp –p把目录权限一起复制)
# cp -rp /var/lib/mysql /home/mysql
vim /etc/my.cnf
datadir=/home/mysql/mysql
socket=/home/mysql/mysql.sock
# 不加登陆时会报ERROR 2002
[client]
default-character-set=utf8
socket=/home/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/home/mysql/mysql.sock

3.启动
在这里插入图片描述

在服务器的初始启动时,如果服务器的数据目录为空,则会发生以下情况:
1服务器已初始化。
2 SSL证书和密钥文件在数据目录中生成。
3validate_password插件安装并启用。
4 'root'@'localhost创建 超级用户帐户。超级用户的密码设置并存储在错误日志文件中。要显示它,请使用以下命令:
grep 'temporary password' /var/log/mysqld.log
通过使用生成的临时密码登录,尽快更改root密码,并为超级用户帐户设置自定义密码:
mysql -uroot -p 
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
添加网络访问权限
grant all privileges on *.* to root@'%' identified by 'MyNewPass4!' WITH GRANT OPTION;
flush privileges;
注意
MySQL的 validate_password 插件默认安装。这将要求密码至少包含一个大写字母,一个小写字母,一个数字和一个特殊字符,并且总密码长度至少为8个字符。
该安装还创建一个名为的用户mysql和一个mysql在系统上命名 的组

单机多实例配置

每个实例可以使用不同的MySQL服务器二进制文件,或者对于多个实例使用相同的二进制文件,或者两种方法的任意组合。
无论是否使用不同的服务器二进制文件,您运行的每个实例都必须配置有多个操作参数的唯一值。这消除了实例之间的冲突的可能性。可以在命令行,选项文件中或通过设置环境变量来设置参数。
MySQL实例管理的主要资源是数据目录。每个实例都应该使用不同的数据目录,该目录的位置使用 --datadir=dir_name 该选项指定 。
除了使用不同的数据目录之外,其他几个选项对于每个服务器实例都必须具有不同的值:
–port=port_num
–port控制TCP / IP连接的端口号。或者,如果主机具有多个网络地址,则可以 --bind-address使每个服务器监听不同的地址。
–socket={file_name|pipe_name}
–socket控制Unix上的Unix套接字文件路径或Windows上的命名管道名称。在Windows上,有必要为配置为允许命名管道连接的服务器指定不同的管道名称。
–shared-memory-base-name=name
此选项仅在Windows上使用。它指定Windows服务器使用的共享内存名称,以允许客户端使用共享内存进行连接。必须为配置为允许共享内存连接的服务器指定不同的共享内存名称。
–pid-file=file_name
此选项指示服务器在其中写入其进程标识的文件的路径名。
如果您使用以下日志文件选项,则每个服务器的值必须不同:
–general_log_file=file_name
–log-bin[=file_name]
–slow_query_log_file=file_name
–log-error[=file_name]
为了获得更好的性能,您可以为每个服务器指定以下选项,以便在多个物理磁盘之间传播负载:
–tmpdir=dir_name
具有不同的临时目录也使得更容易确定哪个MySQL服务器创建任何给定的临时文件。
如果您在不同位置安装了多个MySQL,则可以使用 --basedir=dir_name 该选项指定每个安装的基本目录。
设置多个数据目录
• 创建一个新的数据目录。
使用这种方法,数据目录将处于与首次安装MySQL时相同的状态。它将具有默认的MySQL帐户集合,没有用户数据。
• 复制现有的数据目录。
使用此方法,数据目录中存在的任何MySQL帐户或用户数据都将转移到新的数据目录。

winwods

1在Windows命令行启动多个MySQL实例
在这里插入图片描述

要关闭服务器,请使用相应的端口号连接到每个服务器:
C:\> C:\mysql\bin\mysqladmin --port=3307 --host=127.0.0.1 --user=root --password shutdown
C:\>C:\mysql\bin\mysqladmin --port=3308 --host=127.0.0.1 --user=root --password shutdown

如果您的Windows版本支持命名管道,并且还要允许命名管道连接,请指定启用命名管道并指定其名称的选项。每个支持命名管道连接的服务器都必须使用唯一的管道名称。
在这里插入图片描述
2将多个MySQL实例作为Windows服务启动
方法1:在其中一个标准选项文件中指定所有服务的选项。为此,请为每个服务器使用不同的服务名称。
在这里插入图片描述
使用完整的服务器路径名来安装服务,以确保Windows为每个服务注册正确的可执行程序:

C:\> C:\mysql-5.5.9\bin\mysqld --install mysqld1
C:\>C:\mysql-5.7.21\bin\mysqld --install mysqld2

要启动服务,请使用服务管理器,或使用 具有相应服务名称的NET START:

C:\> NET START mysqld1
C:\>NET START mysqld2

在这里插入代码片要停止服务,请使用服务管理器,或使用适当的服务名称使用 NET STOP:

 C:\> NET STOP mysqld1
 C:\>NET STOP mysqld2

方法2:在单独的文件中指定每个服务器的选项,–defaults-file在安装服务时使用 ,以告诉每个服务器要使用哪个文件。在这种情况下,每个文件应该使用[mysqld]组列出选项 。

在这里插入图片描述

linux-systemd

systemd提供自动的MySQL服务器启动和关机。它还可以使用systemctl命令进行手动服务器管理 。例如:
systemctl {start|stop|restart|status} mysqld
老版兼容命令:
service mysqld {start|stop|restart|status}
本节介绍如何为多个MySQL实例配置systemd。
注意因为systemd具有在安装了systemd支持的平台上管理多个MySQL实例的功能, 所以mysqld_multi和 mysqld_multi.server是不必要的,没有安装。对于RPM平台,MySQL 5.7.13是适用的,Debian平台为5.7.19。
要使用多实例功能,请修改 my.cnf选项文件以包括每个实例的关键选项的配置。这些文件位置是典型的:

•	/etc/my.cnf或 /etc/mysql/my.cnf(RPM平台)
•	/etc/mysql/mysql.conf.d/mysqld.cnf (Debian平台)

管理:
systemctl {start|stop|restart|status} mysqld
取消开机启动: chkconfig mysqld off
systemctl disable mysqld.service
例如,要管理命名的两个实例, replica01并replica02在选项文件中添加如下内容:
RPM platforms:

[mysqld@replica01]
datadir=/var/lib/mysql-replica01  【注意目录权限】
socket=/var/lib/mysql-replica01/mysql.sock
port=3307
log-error=/var/log/mysqld-replica01.log

[mysqld@replica02]
datadir=/var/lib/mysql-replica02   【注意目录权限】
socket=/var/lib/mysql-replica02/mysql.sock
port=3308
log-error=/var/log/mysqld-replica02.log

Debian platforms:

[mysqld@replica01]
datadir=/var/lib/mysql-replica01
socket=/var/lib/mysql-replica01/mysql.sock
port=3307
log-error=/var/log/mysql/replica01.log

[mysqld@replica02]
datadir=/var/lib/mysql-replica02
socket=/var/lib/mysql-replica02/mysql.sock
port=3308
log-error=/var/log/mysql/replica02.log
这里显示的副本名称@用作分隔符,因为它是systemd支持的唯一分隔符。
启动
systemctl start mysqld@replica01
systemctl start mysqld@replica02
开启启动
systemctl enable mysqld@replica01
systemctl enable mysqld@replica02
查看状态
systemctl status 'mysqld@replica01'
systemctl status 'mysqld@replica02'
停止
systemctl stop mysqld@replica01
systemctl stop mysqld@replica02

// 节点2无法远程连接 TODO
address ‘192.168.10.100’ could not be resolved: Name or service not known
设置启动参数
To specify options for mysqld without modifying systemd configuration files directly, set or unset the MYSQLD_OPTSsystemd variable. For example:

systemctl set-environment MYSQLD_OPTS="--general_log=1"
systemctl unset-environment MYSQLD_OPTS

After modifying the systemd environment, restart the server to make the changes effective:
systemctl restart mysqld # RPM platforms

初始化数据目录

After installing MySQL, you must initialize the data directory, including the tables in the mysql system database. For some MySQL installation methods, data directory initialization may be done automatically, as described inSection 2.10, “Postinstallation Setup and Testing”. For other installation methods, including installation from generic binary and source distributions, you must initialize the data directory yourself.

  1. 将位置更改为MySQL安装的顶级目录,由BASEDIR以下代码表示 :

#cd BASEDIR

BASEDIR很可能是类似/usr/local/mysql或 /usr/local。以下步骤假定您已将位置更改为此目录。
2. 创建一个目录,提供一个位置作为secure_file_priv 系统变量的值,将导入/导出操作限制在特定的目录中

#mkdir mysql-files
#chmod 750 mysql-files

  1. 请确保分发内容可访问mysql。如果您将发行版本安装mysql,则不需要进一步的操作。如果您安装了发行版 root,其内容将由其所有 root。mysql通过执行root安装目录中的以下命令来更改其所有权 。第一个命令将文件的所有者属性更改为 mysql用户。第二个将组属性更改为mysql组。

#chown -R mysql .
#chgrp -R mysql .

  1. 初始化数据目录,包括mysql包含初始MySQL授权表的 数据库,确定用户如何连接到服务器。初始化数据目录的命令不会覆盖任何现有的权限表,因此在任何情况下都应该安全运行。
    从MySQL 5.7.6起,使用服务器初始化数据目录:
#bin/mysqld --initialize --user=mysql 
#bin/mysqld --initialize-insecure --user=mysql

如果 mysqld不能识别安装目录或数据目录的正确位置,需要指定其他选项,例如 --basedir或者 --datadir。例如(在一行中输入命令):

#bin/mysqld --initialize --user=mysql
         --basedir=/opt/mysql/mysql
         --datadir=/opt/mysql/mysql/data

或者,将相关选项设置放在/opt/mysql/mysql/etc/my.cnf文件中,并将该文件的名称传递给 mysqld

> [mysqld] basedir=/opt/mysql/mysql datadir=/opt/mysql/mysql/data shell>
> bin/mysqld --defaults-file=/opt/mysql/mysql/etc/my.cnf
>          --initialize --user=mysql

在MySQL 5.7.6之前,使用mysql_install_db:【从MySQL 5.7.6开始, 不建议使用mysql_install_db。要初始化数据目录】

#bin/mysql_install_db --user=mysql

在这里插入图片描述

  1. Connect to the server:
     If you used --initialize but not --initialize-insecure to initialize the data directory, connect to the server as root using the random password that the server generated during the initialization sequence:
	shell> mysql -u root -p
	Enter password: (enter the random root password here)

Look in the server error log if you do not know this password.
 If you used --initialize-insecure to initialize the data directory, connect to the server as root without a password:

	shell> mysql -u root --skip-password
  1. After connecting, assign a new root password:

mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘new_password’;

  1. 如果希望服务器能够自动部署安全连接,请使用 mysql_ssl_rsa_setup实用程序创建默认的SSL和RSA文件:
    mysql_ssl_rsa_setup
    After initializing the data directory, you can establish the final installation ownership settings. To leave the installation owned by mysql, no action is required here. Otherwise, most of the MySQL installation can be owned by root if you like. The exception is that the data directory and the mysql-files directory must be owned by mysql. To accomplish this, run the following commands as root in the installation directory. For some distribution types, the data directory might be named var rather than data; adjust the second command accordingly.
shell> chown -R root .
shell> chown -R mysql data mysql-files
  1. 指定MySQL服务器在启动时应该使用的选项,将它们放在一个/etc/my.cnf或者 一个/etc/mysql/my.cnf文件中。

测试服务器

使用mysqladmin验证服务器是否正在运行。以下命令提供简单的测试来检查服务器是否已启动并响应连接:
#mysqladmin version
#mysqladmin variables
如果无法连接到服务器,请指定-u root连接的选项root。如果您已经为该root帐户分配了密码,则还需要-p在命令行中指定并在出现提示时输入密码。例如:
#mysqladmin -u root -p'MyNewPass4!' version
验证您是否可以关闭服务器:
mysqladmin -u root -p'MyNewPass4!' shutdown
验证您是否可以重新启动服务器。通过使用mysqld_safe或直接调用 mysqld来执行此操作:
mysqld_safe --user=mysql &
mysqld --user=mysql &
使用mysqlshow查看存在的数据库:
mysqlshow
如果指定数据库名称,mysqlshow将 显示数据库中的表的列表:
mysqlshow mysql
使用mysql程序从mysql数据库中的表中选择信息:
mysql -e "SELECT User, Host, plugin FROM mysql.user" mysql

Tutorial

查看mysql帮助
mysql --help
连接数据库
mysql -h host -u user -p
退出
mysql> QUIT
查询数据库版本,系统时间
mysql> SELECT VERSION(),CURRENT_DATE,CURRENT_TIME;
查看数据库
mysql> SHOW DATABASES;
切换数据库
mysql> USE test
创建数据库
mysql> CREATE DATABASE menagerie;
给用户访问数据库权限
mysql> GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';
查看数据库表
mysql> SHOW TABLES;
查看表结构
mysql> DESCRIBE/DESC testtable; 
把数据加载到表
mysql> INSERT INTO petVALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;

Programs

安装相关
mysql_install_db初始化MySQL数据文件夹和创建系统数据
mysql_install_db --user=mysql \
         --basedir=/opt/mysql/mysql \
         --datadir=/opt/mysql/mysql/data
mysql_secure_installation,可以:
1.设置root账号密码
2.可以设置root不让非localhost登陆
3.可以删除匿名账号
4.可以删除test账号
直接运行mysql_secure_installaiton,然后会进入交互模式进行设置。
mysql_tzinfo_to_sql把时区信息加载到mysql,【设置完成后需要重启】
shell> mysql_tzinfo_to_sql tz_dir   加载全部
shell> mysql_tzinfo_to_sql tz_file tz_name  加载一个
shell> mysql_tzinfo_to_sql --leap tz_file  润秒
如:
shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
这些数据会被插入到mysql  time zone表里面
查看时区信息
mysql> SELECT @@global.time_zone, @@session.time_zone;

mysql_upgrade检查当前mysql服务,所有数据库中不兼容的表。
客户端
mysqladmin是一个管理工具,可以用来检查mysql的配置,当前状态,创建和删除数据库等。
shell> mysqladmin [options] command [command-arg] [command [command-arg]] ...
mysqladmin由2部分组成:
1.选项,基本和mysql的选项差不多
2.命令,通过这些命令执行到mysqld
如,设置root密码
mysqladmin  -u root password ‘newpassword’

mysqlcheck用来维护表的,检查,修复,优化,分析表。

mysqldump是逻辑备份工具,备份产生sql语句结果可以放在txt,xml和cvs中。mysqldump也是常用工具之一。mysqldump可以适用于小数据库但是大数据库用mysqldump备份在恢复的时候很坑。大数据库如果是innodb表可以考虑使用mysqlbackup,做物理备份,如果是myISAM表可以考虑使用mysqlhotcopy。
例子:
备份数据库
shell> mysqldump db_name > backup-file.sql
恢复数据库:
shell> mysql db_name < backup-file.sql
shell> mysql -e "source /path-to-backup/backup-file.sql" db_name
迁移数据库:
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name
备份多个数据库:
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql

mysqlimport导入工具,是通过LOAD DATA INFILE导入数据。

mysqlslap就是mysql的压测工具
管理和效率
Innochecksum打印innodb文件的checksum,通过读取innodb表空间文件计算每个page的checksum然后和保存的checksum对比,报告不匹配的,不匹配说明page损坏。主要用于断电情况下表空间文件一致性检查。

mysql_config_editor会保存认证信息到一个加密的登陆文件(.mylogin.cnf)

mysqlaccess用来诊断给定host,user,数据库的访问权限。

mysqlbinlog是比较常用的工具,可以查看binlog的内容(也就是事务日志解析工具)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值