命令记不住

登陆

MySQL 5.7 版本 3 种安装步骤

MySQL的3种安装操作

MySQL安装管理:

  • 1.YUM安装
  • 2.二进制安装
  • 3.源码编译安装

Mysql版本选择:

  • 选择GA版本6-12月产品(GA稳定版)
  • MYSQL常用版本5.6.34 5.6.36 5.6.38 5.7.18 5.7.20

1.yum安装mysql

MySQL Yum仓库提供了用于在Linux平台上安装MySQL服务器,客户端和其他组件的RPM包。

mysql-yum安装下载地址 https://dev.mysql.com/downloads/repo/yum/
mysql-yum历史版本 http://repo.mysql.com/yum/

注意: 使用MySQL Yum仓库时,默认选择安装最新的MySQL版本。如果需要使用低版本请按如下操作。

1.安装MySQL仓库源

[root@sql ~]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

2.选择并启用适合当前平台的发行包

//列出所有MySQL发行版仓库
[root@sql ~]# yum repolist all|grep mysql
//禁用8.0发行版仓库, 启用5.6发行版仓库
[root@sql ~]# yum install yum-utils
[root@sql ~]# yum-config-manager --disable mysql80-community
[root@sql ~]# yum-config-manager --enable mysql57-community
注意
可以手动编辑/etc/yum.repos.d/mysql-community.repo 文件配置仓库
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

3.通过以下命令安装MySQL, 并启动MySQL

[root@sql ~]# yum install -y mysql-community-server
[root@sql ~]# systemctl start mysqld
[root@sql ~]# systemctl enable mysqld

MySQL服务器初始化(仅适用于MySQL 5.7)在服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况:

  • 服务器已初始化。
  • 在数据目录中生成SSL证书和密钥文件。
  • validate_password插件安装并启用。
  • 超级用户帐户'root'@'localhost'已创建。

超级用户的密码被设置并存储在错误日志文件中。要显示它,请使用以下命令:

[root@vm-70-160 ~]# grep "password" /var/log/mysqld.log 
2018-04-28T07:11:51.589629Z 1 [Note] A temporary password is generated for root@localhost: jHlRHucap3+7

通过使用生成的临时密码登录并尽快更改root密码并为超级用户帐户设置自定义密码

[root@vm-70-160 ~]# mysql -uroot -pjHlRHucap3+7
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Bgx123.com';

注意
MySQL的validate_password插件默认安装。将要求密码至少包含大写、小写、数字、特殊字符、并且总密码长度至少为8个字符。

2.二进制安装Mysql

1.软件部分部署

1.创建软件目录:

[root@db01 ~]# mkdir -p /server/tools

上传软件到此目录

[root@db01 ~]# ls
mysql-5.7.20-linux-glibc2.12-x86_64.tar

2.解压并改名为mysql

[root@db01 app]# tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar
[root@db01 app]# mv mysql-5.7.20 /server/tools/mysql
[root@db01 app]# ls -l /server/tools/mysql
total 36
drwxr-xr-x  2 root root   4096 Mar  4 14:55 bin
-rw-r--r--  1 7161 31415 17987 Sep 13  2017 COPYING
drwxr-xr-x  2 root root     55 Mar  4 14:55 docs
drwxr-xr-x  3 root root   4096 Mar  4 14:55 include
drwxr-xr-x  5 root root    229 Mar  4 14:55 lib
drwxr-xr-x  4 root root     30 Mar  4 14:55 man
-rw-r--r--  1 7161 31415  2478 Sep 13  2017 README
drwxr-xr-x 28 root root   4096 Mar  4 14:55 share
drwxr-xr-x  2 root root     90 Mar  4 14:55 support-files

3.修改环境变量

[root@db01 bin]# vi /etc/profile
export PATH=/server/tools/mysql/bin:$PATH

[root@db01 bin]# source /etc/profile

4.建立mysql用户和组

[root@db01 bin]# useradd -s /sbin/nologin -M mysql

5.创建相关目录并修改权限

数据路径:

[root@db01 bin]# mkdir /data/mysql -p 
[root@db01 bin]# chown -R mysql.mysql /server/tools/*
[root@db01 bin]# chown -R mysql.mysql /data/*
2.数据部分配置

1.初始化数据(建库)
说明:
一套完整的数据库管理系统的基本结构

软件部分
存放位置:/server/tools/mysql

数据部分/data/mysql
系统相关数据:维持mysql数据库软件程序,正常运行的系统数据
用户数据:和用户的应用程序有关的

1.2.初始化<系统>数据,初始化管理员的临时密码

1.卸载系统自动安装mariadb-libs并且安装依赖

[root@db01 ~]# yum remove mariadb-libs
[root@db01 ~]# yum install -y libaio-devel

2.初始化数据(5.7之后版本):

[root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/server/tools/mysql --datadir=/data/mysql

3.初始化数据(5.7之前):

[root@db01 ~]# /server/tools/mysql/scripts/mysql_install_db  --user=mysql --basedir=/server/tools/mysql --datadir=/data/mysql

4.初始化数据结果

  • 生成系统相关数据/data/mysql
  • 具体参数作用
--initialize,--initialize-insecure 
    initialize: 开启MySQL安全策略 
    initialize-insecure :关闭MySQL安全策略
安全策略:
    1.密码长度:12以上
    2.密码复杂度: 数字,大小字符,特殊符号
    3.密码默认过期时间为180天
    4.初始化完成后会立即生成一个临时密码
    A temporary password is generated for root@localhost: anAWFnV(a49g
3.配置文件部分

1.书写默认配置文件

[root@db01 ~]# vi /etc/my.cnf

[mysqld]
basedir=/server/tools/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
server_id=6
port=3306

[mysql]
socket=/tmp/mysql.sock
prompt=db01-[\\d]>

2.Centos7使用systemd管理mysql

[root@db01 ~]# vi /etc/systemd/system/mysqld.service 
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/server/tools/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

[root@db01 mysql]# /etc/init.d/mysqld stop

**注意:**将原来模式启动mysqld先关闭,然后再用systemd管理。
排查问题: /server/tools/mysql/bin/mysqld --defaults-file=/etc/my.cnf

3.centos6 sys-v模式管理mysqld

[root@db01 support-files]# cd  /server/tools/mysql/support-files
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld 

[root@db01 support-files]# /etc/init.d/mysqld restart
[root@db01 support-files]# /etc/init.d/mysqld stop
[root@db01 support-files]# /etc/init.d/mysqld start
[root@db01 support-files]# /etc/init.d/mysqld status

4.更改root密码

//第一种方式, 需要知道密码
[root@sql ~]# mysqladmin -uroot -p123 password 'Bgx123456'
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

//第二种方式, 登录MySQL, 修改相应表
mysql> update mysql.user set authentication_string=password('123456') where user='root';
mysql> flush privileges;

3.源码编译安装Mysql

1.下载软件

官方自带(boost版本mysql)

[root@db01 mysql]# mkdir -p  /server/tools/
[root@db01 tools]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz
[root@db01 tools]# tar xf mysql-boost-5.7.20.tar.gz
[root@db01 tools]# mv mysql-5.7.20/  mysql

安装依赖包

[root@db01 mysql]# yum install -y cmake gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel
2.创建关键目录
[root@db01 mysql]# mkdir -p /application/mysql
[root@db01 mysql]# mkdir -p /application/mysql/data
[root@db01 mysql]# useradd mysql
[root@db01 mysql]# chown -R mysql:mysql /application/*
3.cmake进行预编译:
[root@db01 mysql]# cmake -DCMAKE_INSTALL_PREFIX=/application/mysql/ \
-DMYSQL_DATADIR=/application/mysql/data  \
-DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/application/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SSL:STRING=bundled -DWITH_ZLIB:STRING=bundled \
-DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost

++++++++++++++++++++++++++++++++++++++++++++
说明:
-DWITH_SYSTEMD=1        ------>是否支持systemd方式管理MySQL
-DDOWNLOAD_BOOST=1    ------>自动下载boost支持
-DWITH_BOOST=./boost    ------>本地boost目录

Socket: 
为了简化本地连接MySQL,提供一种封装形式的TCP/IP协议。
-DMYSQL_UNIX_ADDR=/application/mysql/mysql/mysql.sock 
++++++++++++++++++++++++++++++++++++++++++++++
4.编译安装:

[root@db01 mysql]# make && make install

4.Mysql忘记密码

方式1:
核心参数:
--skip-grant-tables 
#跳过授权表(mysql.user)
--skip-networking
#跳过网络用户连接

(1)停数据库

[root@db01 mysql]# pkill mysqld
[root@db01 mysql]# /etc/init.d/mysqld stop
[root@db01 mysql]# systemctl  stop mysqld

(2)跳过授权表启动数据库

[root@db01 mysql]# mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables --skip-networking  &

(3)修改密码

方法一:

[(none)]>flush privileges;
[(none)]>grant all on *.* to root@'localhost' identified by 'abc' with grant option;
[root@db01 mysql]# pkill mysqld
[root@db01 mysql]# systemctl start mysqld
[root@db01 mysql]# mysql -uroot -p

方法二:

[(none)]>update mysql.user set authentication_string=PASSWORD('123') where user='root' and host='localhost';

(4)停库,正常启动数据库

[root@db01 mysql]# mysqladmin shutdown 
[root@db01 mysql]# systemctl start mysqld

(5)测试

[root@db01 mysql]#  mysql -uroot -p123456

(6)额外补充,将密码改为空

[(none)]>update mysql.user set authentication_string=PASSWORD('') where user='root' and host='localhost';
flush privileges;
方式2:

跳过授权表

[root@sql ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables # 新增跳过授权表
//重启数据库生效
[root@sql ~]# systemctl restart mysqld

查看表字段

//查看表字段
mysql> select user,host,authentication_string from mysql.user;
+---------------+-----------+-------------------------------------------+
| user          | host      | authentication_string                     |
+---------------+-----------+-------------------------------------------+
| root          | localhost | *C786BB788F276CD53317C80C1957E5F5696751F0 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+---------------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)

更新密码

//5.7.6版本后更新密码方式
mysql> update mysql.user set authentication_string=password('123456') where user='root';
mysql> exit
//5.7.6版本前更新密码方式
mysql> update mysql.user set password=password('123456') where user="root" and host="localhost";

修改成功生效数据库

[root@sql ~]# vim /etc/my.cnf
[mysqld]
#skip-grant-tables #注释

重启数据库生效

//重启数据库生效
[root@sql ~]# systemctl restart mysqld
//使用新密码登录数据库
[root@sql ~]# mysql -uroot -p123456
mysql> 

5.插件扩展

安装mysql插件

yum -y install epel-release python-pip python-devel
pip install mycli
推荐阅读