1、关于MySQL
MySQL是一种开放源代码的关系型数据库管理系(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理,于1998年一月发行第一个版本。
2、MySQL的安装常见方式有三种:
(1)二进制安装 (2)源码编译安装 (3)rpm包安装
不管用哪种方式安装,先到MySQL官网(http://www.mysql.com)下载相对应的软件包。
3、接下来我将三种安装方式进行一个安装介绍
(1)二进制安装
因为linux centos7系统自带有安装mariadb,所以需要先卸载自带的mariadb数据库
[root@localhost ~]# rpm -qa | grep -i mariadb
[root@localhost ~]# yum -y remove mariadb*
上传软件包到服务器后进行解压缩
[root@localhost ~]# tar -xvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
修改目录名称
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql
检查并创建用户和用户组
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -r -g mysql mysql
切换到mysql目录下创建data目录文件夹
[root@localhost mysql]# mkdir data
给目录和用户授予权限,很重要的一步
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
[root@localhost ~]# chmod -R 755 /usr/local/mysql/
安装和初始化数据库,执行之前先查看/etc/目录下是否有my.cnf配置文件,如果有将其删除或者修改名字备份起来,不然会出现各种PID和SOCK有关的问题
[root@localhost local]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
复制启动脚本到资源目录
[root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
给mysqld服务控制脚本加执行权限
[root@localhost ~]# chmod +x /etc/rc.d/init.d/mysqld
将mysqld服务添加到开机自启系统服务
[root@localhost ~]# chkconfig --add mysqld
将mysql命令添加软连接至/usr/bin系统命令中
[root@localhost ~]# ln -s /usr/local/mysql/bin/mysql /usr/bin
启动mysql服务
[root@localhost ~]# systemctl start mysqld
登陆mysql数据库,初始化时使用了--initiablize-insecure所以不需要密码就可登陆,进入数据库后添加密码即可
[root@localhost ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.28 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
到此表示MySQL5.7.28二进制安装在redhat7.6上已完成。
(2)源码包安装
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.32.tar.gz
或者直接下载mysql-boost.5.7.32.tar.gz,这样可以免去单独下载boost
[root@localhost src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.32.tar.gz
下载boost网址为:http://www.boost.org/users/download/
这个版本的MySQL要求boost的版本是1.59,链接为:
http://www.boost.org/users/history/version_1_59_0.html
下面给出boost 1.59.0的链接,在/usr/local/src目录下直接用wget进行下载
wget --no-check-certificate http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
安装相关的依赖包
[root@localhost ~]# yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison bison-devel
相关依赖包的作用:
cmake:
由于从 MySQL5.5 版本开始弃用了常规的 configure 编译方法,所以需要 CMake 编译器,用于设置 mysql 的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。
Boost:
从 MySQL 5.7.5 开始 Boost 库是必需的,mysql 源码中用到了 C++的 Boost 库,要求必须安装 boost1.59.0 或以上版本, 这个选择源码安装
GCC:
是 Linux 下的 C 语言编译工具,mysql 源码编译完全由 C 和 C++编写,要求必须安装GCC
bison:
Linux 下 C/C++语法分析器
ncurses:
字符终端处理库
解压MySQL源文件
[root@localhost ~]# tar -zxvf mysql-boost-5.7.32.tar.gz -C /usr/local/
进入MySQL源文件目录,新建configure作为编译目录,并进入该目录
[root@localhost ~]# cd /usr/local/mysql-5.7.32
[root@localhost mysql-5.7.32]# mkdir configure
[root@localhost mysql-5.7.32]# cd configure
使用cmake进行生成编译环境
参数 说明
-DCMAKE_INSTALL_PREFIX=dir_name 基础的文件夹,对应mysqld的--basedir参数
-DMYSQL_DATADIR=dir_name 数据存放目录
-DSYSCONFDIR=dir_name 默认配置my.cnf目录
-DWITH_MYISAM_STORAGE_ENGINE 添加MYISAM引擎支持
-DWITH_INNOBASE_STORAGE_ENGINE 添加InnoDB引擎支持
-DWITH_ARCHIVE_STORAGE_ENGINE 添加ARCHIVE引擎支持
-DMYSQL_UNIX_ADDR 指定mysql.sock位置
-DWITH_PARTITION_STORAGE_ENGINE 安装支持数据库分区
-DINSTALL_BINDIR=dir_name bin目录位置
-DINSTALL_DOCDIR=dir_name 文档目录位置
-DINSTALL_DOCREADMEDIR=dir_name Readme文件位置
-DINSTALL_INCLUDEDIR=dir_name Include目录位置
-DINSTALL_LAYOUT=name 布局选项,包括Standalone、RPM、SRV4、DEB
-DWITH-SYSTEMD 可以使用systemd控制mysql服务
-DEXTRA_CHARSETS 使mysql支持所有的扩展字符
-DCMAKE_BUILD_TYPE RelWithDebInfo: 默认值,启用optimizations,同时生成调试信息 ,Debug: 禁用optimizations, 同时生成调试信息
-DENABLE_DTRACE 是否启用dtrace
-DWITH_EMBEDDED_SERVER 是否构建libmysqld嵌入式服务器库
-DWITH_INNODB_MEMCACHED 是否生成memcached共享库
-DWITH_SSL 加载SSL库 •bundled:使用与分发捆绑的库。•system:使用系统库。这是默认设置
-DWITH_ZLIB 某些功能要求使用压缩库支持构建服务器,例如 compress()和uncompress()函数,以及客户端/服务器协议的压缩, 这个使用_zlib表示zlib支持的来源: •bundled:使用与分发捆绑的zlib库。•system:使用系统zlib库。这是默认设置
-DINSTALL_PLUGINDIR 插件目录
-DDEFAULT_CHARSET 设置mysql的默认字符集
-DDEFAULT_COLLATION 设置默认字符集校对规则
-DWITH_EDITLINE 加载libedit/editline库 •bundled:使用与分发捆绑的库。 •system:使用系统库。这是默认设置
-DCOMPILATION_COMMENT 编译信息,后面启动的时候会看到
-DWITH_DEBUG 支持启用调试
-DWITH_BOOST 指向boost库所在目录
[root@localhost mysql-5.7.32]#
cmake .. -DBUILD_CONFIG=mysql_release \
-DINSTALL_LAYOUT=STANDALONE \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DSYSCONFDIR=/usr/local/mysql5.7/etc/my.cnf \
-DENABLE_DTRACE=OFF \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_SSL=bundled \
-DWITH_ZLIB=system \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.7/ \
-DINSTALL_PLUGINDIR="/usr/local/mysql5.7/lib/plugin" \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EDITLINE=bundled \
-DFEATURE_SET=community \
-DCOMPILATION_COMMENT="MySQL Server (GPL)" \
-DWITH_DEBUG=OFF \
-DWITH_BOOST=../boost
如果编译出现错误,先删除CMakeCache.txt后,再重新编译
[root@localhost configure]# rm -rf CMakeCache.txt
出现下面提示标识成功生成编译环境
-- Configuring done
-- Generating done
使用make进行编译
[root@localhost configure]# make
编译完成后,会出现如下信息:
[100%] Building CXX object sql/CMakeFiles/udf_example.dir/udf_example.cc.o
Linking CXX shared module udf_example.so
[100%] Built target udf_example
[100%] Built target my_safe_process
安装MySQL:
[root@localhost configure]# make install
初始化数据库
添加mysql用户,禁止登陆
[root@localhost ~]# useradd -s /sbin/nologin mysql
新建数据库文件夹及日志文件夹,并更改用户权限为mysql:
[root@localhost ~]# mkdir /mysql_data
[root@localhost ~]# mkdir /var/mysql/log
[root@localhost ~]# chown -R mysql:mysql /mysql_data/
[root@localhost ~]# chown -R mysql:mysql /var/mysql/log
修改配置文件
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
port=3306
user=mysql
datadir=/data/mysql/data
log_error=/data/mysql/log/error.log
basedir=/usr/local/mysql5.7
socket=/usr/local/mysql5.7/mysql.sock
pid-file=/usr/local/mysql5.7/mysqld.pid
default-storage-engine=INNODB
max_connections=200
character-set-server=utf8
[mysql]
port=3306
default-character-set=utf8
socket=/usr/local/mysql5.7/mysql.sock
[client]
port=3306
default-character-set=utf8
socket=/usr/local/mysql5.7/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
#[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid
# include all files from the config directory
!includedir /etc/my.cnf.d
初始化数据库
[root@localhost ~]# /usr/local/mysql5.7/bin/mysqld --initialize --user=mysql
配置启动文件及环境变更
[root@localhost ~]# cp /usr/local/mysql5.7/support-files/mysql.server /etc/init.d/mysqld
启动msyql:
[root@localhost ~]# /etc/init.d/mysqld start
设置MySQL开机自动启动
[root@localhost ~]# chkconfig mysqld on
配置MySQL环境变量:
[root@localhost ~]# vim /etc/profile
在最底层添加
PATH=$PATH:/usr/local/mysql/bin
查看root的初始密码
[root@localhost ~]# cat /data/mysql/log/error.log |grep 'password'
[root@localhost ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25
mysql> alter user root@'localhost' identified by '12341234';
Query OK, 0 rows affected (0.00 sec)
登陆验证完修改密码
以上就是源码包在redhat7.6安装的全过程。
(3)rpm包安装
上传软件包并进行解压
[root@localhost ~]# tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
mysql-community-test-5.7.26-1.el7.x86_64.rpm
mysql-community-server-5.7.26-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm
mysql-community-libs-5.7.26-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.26-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.26-1.el7.x86_64.rpm
mysql-community-embedded-5.7.26-1.el7.x86_64.rpm
mysql-community-devel-5.7.26-1.el7.x86_64.rpm
mysql-community-common-5.7.26-1.el7.x86_64.rpm
mysql-community-client-5.7.26-1.el7.x86_64.rp
卸载自带的mariadb数据库
[root@localhost ~]# yum remove mariadb*
开始安装
完成mariadb的卸载之后,开始进行mysql的安装,这里要注意安装的次序,可以按照如下顺序进行。
[root@localhost ~]# rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
[root@localhost ~]#rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
启动服务
安装完成之后,默认mysql不会自启动,需要手动启动,查看当前mysql的状态。
[root@localhost ~]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
启动MySQL的服务
[root@localhost ~]# systemctl start mysqld
查看mysql状态
[root@localhost ~]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2019-11-01 17:40:54 CST; 13s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
修改初始密码
要登录Mysql,初始登录临时密码可以在Mysql.log日志中找到,切换到/var/log下
[root@localhost log]# pwd
/var/log
[root@localhost log]# grep 'password' mysqld.log
2019-11-02T01:38:00.297529Z 1 [Note] A temporary password is generated for root@localhost: i-C8XdWQl5vs
2019-11-02T01:38:48.148677Z 2 [Note] Access denied for user 'root'@'localhost' (using password: YES)
2019-11-02T01:38:50.709844Z 3 [Note] Access denied for user 'root'@'localhost' (using password: NO)
2019-11-02T01:40:53.338771Z 4 [Note] Access denied for user 'root'@'localhost' (using password: YES)
使用临时密码登录到数据库:
[root@localhost log]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.26
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
登录到数据库之后,执行操作时会提示先修改密码:
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>
修改本地登陆密码
mysql> alter user 'root'@'localhost' identified by 'Csc_1O8!';
Query OK, 0 rows affected (0.00 sec)
到此MySQL5.7.26rpm包在redhat7.6上安装完成。