1.YUM安装数据库

MySQL Yum仓库提供了用于在Linux平台上安装MySQL服务器,客户端和其他组件的RPM包。mysql-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.7发行版仓库
[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, 不需要复杂的编译设置和编译时间等待,解压下载的软件包,初始化即可完成MySQL的安装和启动。MySQL二进制包下载地址

MySQL二进制包官方安装手册

1.基础环境准备

[root@sql ~]# systemctl stop firewalld
[root@sql ~]# systemctl disable firewalld
[root@sql ~]# setenforce 0

//建立用户与相应目录
[root@sql ~]# groupadd mysql
[root@sql ~]# useradd -r -g mysql -s /sbin/nologin mysql
[root@sql ~]# mkdir /soft/src -p && cd /soft/src

2.下载MySQL并安装

[root@sql src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
[root@sql src]# tar xf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz -C /soft
[root@sql src]# ln -s /soft/mysql-5.7.22-linux-glibc2.12-x86_64/ /soft/mysql

3.进行MySQL初始化

//创建初始化目录以及数据库数据目录

[root@sql ~]# mkdir /soft/mysql/{mysql-file,data}
[root@sql ~]# chown mysql.mysql /soft/mysql/

//初始化数据库
[root@sql ~]# /soft/mysql/bin/mysqld --initialize \
--user=mysql --basedir=/soft/mysql \
--datadir=/soft/mysql/data
-------

//初始化数据库会告诉默认登陆账户与密码
2018-04-28T02:30:33.954980Z 1 [Note] A temporary password is generated for'root@localhost: I,isfqnx.0tO'
-------

//使用ssl连接, 初始化后重新授权目录权限[如不需要可忽略]

[root@sql ~]# /soft/mysql/bin/mysql_ssl_rsa_setup \
--datadir=/soft/mysql/data/
[root@sql ~]# chown -R mysql.mysql /soft/mysql/

4.建立MySQL配置文件

//mysql安装目录及mysql数据库目录
[root@sql ~]# cp /etc/my.cnf /etc/my.cnf_bak
[root@sql ~]# vim /etc/my.cnf
[mysqld]
basedir=/soft/mysql
datadir=/soft/mysql/data

5.启动MySQL数据库

//方式1,使用 mysqld_safe 
[root@sql ~]# /soft/mysql/bin/mysqld_safe --user=mysql &

//方式2, 使用(systemV)方式管理, [强烈推荐]
[root@sql ~]# cp /soft/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@sql ~]# chkconfig --add mysqld
[root@sql ~]# chkconfig mysqld on

//修改安装目录与数据存放目录
[root@sql ~]# sed -i '/^basedir=/cbasedir=\/soft\/mysql' /etc/init.d/mysqld 
[root@sql ~]# sed -i '/^datadir=/cdatadir=\/soft\/mysql\/data' /etc/init.d/mysqld

//启动数据库
[root@sql ~]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!

//检查进程
[root@sql ~]# ps aux|grep mysql

//检查端口
[root@sql ~]# lsof -i :3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  2659 mysql   16u  IPv6  28431      0t0  TCP *:mysql (LISTEN)
[root@sql ~]# ss -lntup|grep 3306
tcp    LISTEN     0      80 :::3306  :::*   users:(("mysqld",pid=2659,fd=16))

6.连接数据库测试

//默认情况没有mysql命令, 如果有可能使用过yum安装, 这样容易连错数据库(PATH路径存在命令执行优先级问题)
[root@sql ~]# mysql
-bash: mysql: command not found

//可以选择添加路径至PATH中, 或者直接使用绝对路径执行
[root@sql ~]# echo "export PATH=$PATH:/soft/mysql/bin" >> /etc/profile
[root@sql ~]# source /etc/profile

//登陆数据库
[root@sql ~]# mysql -uroot -p"I,isfqnx.0tO"

//默认系统配置数据库密码必须修改, 否则无法使用数据库
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

//修改系统默认密码
mysql> alter user root@'localhost' identified by 'bgx';
Query OK, 0 rows affected (0.01 sec)
mysql> exit;

//退出后使用新密码重新登录数据库
[root@sql ~]# mysql -uroot -p"bgx"
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.02 sec)
mysql> exit;
注意: 如果需要重新初始化[可选]

//如果重新初始化会导致数据全部丢失
[root@sql ~]# yum install -y psmisc
[root@sql ~]# killall mysqld
[root@sql ~]# rm -rf /soft/mysql/data/*
[root@sql ~]# /soft/mysql/bin/mysqld --initialize --user=mysql \
--basedir=/soft/mysql --datadir=/soft/mysql/data
#可不执行
[root@sql ~]# /soft/mysql/bin/mysql_ssl_rsa_setup --datadir=/soft/mysql/data

3.源码安装数据库

1.源码安装mysql需要依赖cmake、boost

[root@sql ~]# yum install libaio-devel gcc gcc-c++ ncurses ncurses-devel cmake -y
[root@sql ~]# useradd -M -s /sbin/nologin mysql
[root@sql ~]# mkdir /soft/src/ -p

2.下载源码包并编译MySQL

[root@sql ~]# wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.22.tar.gz
[root@sql ~]# tar xf mysql-boost-5.7.22.tar.gz
[root@sql ~]# cd mysql-5.7.22/
[root@sql ~]# cmake -DCMAKE_INSTALL_PREFIX=/soft/mysql-5.7.22 \
-DMYSQL_UNIX_ADDR=/soft/mysql-5.7.22/data/mysql.sock \
-DMYSQL_DATADIR=/soft/mysql-5.7.22/data \
-DSYSCONFDIR=/soft/mysql-5.7.22/conf \
-DWITH_MYISAM_STORAGE_ENGINE=0 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=0 \
-DWITH_READLINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_BOOST=/soft/package/src/mysql-5.7.22/boost/boost_1_59_0
[root@sql ~]# make
[root@sql ~]# make install

3.完成后基本优化

[root@sql ~]# ln -s /soft/mysql-5.7.22 /soft/mysql
[root@sql ~]# mkdir /soft/mysql/data
[root@sql ~]# chown -R mysql.mysql /soft/mysql

4.准备MySQL基础配置文件

[root@sql ~]# vim /etc/my.cnf
[mysqld]
basedir=/soft/mysql
datadir=/soft/mysql/data

5.拷贝MySQL程序启动文件

//拷贝官方准备的启动脚本
[root@sql ~]# cp /soft/mysql/support-files/mysql.server /etc/init.d/mysqld

//添加为系统服务, 并设定开机自启动
[root@sql ~]# chkconfig --add mysqld && chkconfig mysqld on

6.初始化MySQL

[root@sql ~]# /soft/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/soft/mysql --datadir=/soft/mysql/data

//启动MySQL
[root@sql ~]# /etc/init.d/mysqld start

//为mysql命令添加环境变量,以便后续简化执行命令
[root@sql ~]# echo >> "export PATH=/data/soft/mysql/bin:$PATH" /etc/profile
[root@sql ~]# source /etc/profile

//源码编译MySQL默认root没有密码
[root@sql ~]# mysql

4.变更数据库密码

1.更改root密码

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

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

2.忘记mysql root密码

[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('Bgx123.com') where user='root';
mysql> exit

//5.7.6版本前更新密码方式
mysql> update mysql.user set password=password('Bgx123.com') 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 -pBgx123.com
mysql> 
文档更新时间: 2018-10-29 14:12   作者:李延召