MySQL的安装及初始化


  注:本篇以 CentOS-7.6+MySQL-8 为例进行演示。

一、官方yum源安装(不推荐)

  于RHEL7后安装光盘不再提供MySQL,可以配置MySQL官方提供的YUM源文件。不过官方yum源安装速度非常慢!!YUM源文件下载界面,click here!这里我们根据系统选择对应的版本点击Download进入下一个界面。


  右击"No thanks, just start my download.",选择"复制链接地址"。

  复制链接之后,使用wget工具下载到我们的服务器上,再进行后续安装过程。

[root@localhost ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
[root@localhost ~]# yum install mysql80-community-release-el7-3.noarch.rpm    //安装MySQL源
[root@localhost ~]# yum list | grep "mysql-community"    //检查MySQL源是否安装成功
mysql-community-client.i686             8.0.21-1.el7                   mysql80-community
mysql-community-client.x86_64           8.0.21-1.el7                   mysql80-community
mysql-community-common.i686             8.0.21-1.el7                   mysql80-community
mysql-community-common.x86_64           8.0.21-1.el7                   mysql80-community
...省略部分信息
[root@localhost ~]# yum install mysql-community-server    //安装MySQL

二、RPM包安装

  这里我们使用mysql的捆绑包进行安装,首先需要下载RPM到本地,RPM包下载界面,click here!这里我们选择操作系统类型(Red Hat Enterprise Linux / Oracle Linux)及版本(Red Hat Enterprise Linux 7 / Oracle Linux 7(x86,64-bit)),然后点击Download进入下一个界面。


  右击"No thanks, just start my download.",选择"复制链接地址"。
  复制链接之后,使用wget工具下载到我们的服务器上,再进行后续安装过程。
#因为在安装过程中可能存在依赖,因此需要修改网络源来解决依赖。这里过程省略,如有问题请参考:https://blog.csdn.net/weixin_43898125/article/details/104903507

#卸载Mariadb
[root@localhost ~]# rpm -qa | grep mariadb    //查询是否安装mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@localhost local]# yum remove mariadb-libs-5.5.60-1.el7_5.x86_64 -y    //进行卸载

#将rpm包下载到/usr/local/src/目录下
[root@localhost ~]# cd /usr/local/src/    //进入/usr/local/src目录下
[root@localhost src]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar    //下载rpm捆绑包

#进行安装前的准备
[root@localhost src]# mkdir /usr/local/mysql    //在/usr/local目录下创建mysql目录
[root@localhost src]# groupadd mysql    //创建mysql用户组
[root@localhost src]# useradd -g mysql mysql -d /usr/local/mysql/ -s /sbin/nologin    //创建mysql用户
[root@localhost src]# tar xf mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar -C /usr/local/mysql/    //解压安装包到/usr/local/mysql目录下
[root@localhost src]# cd /usr/local/mysql/    //进入/usr/local/mysql目录下

#进行安装(客户端、服务端、共享库以及兼容性库)
[root@localhost mysql]# yum localinstall mysql-community-client-8.0.21-1.el7.x86_64.rpm mysql-community-server-8.0.21-1.el7.x86_64.rpm mysql-community-libs-8.0.21-1.el7.x86_64.rpm mysql-community-common-8.0.21-1.el7.x86_64.rpm

#启动mysql
[root@localhost mysql]# systemctl start mysqld    //启动mysqld服务
[root@localhost mysql]# systemctl enable mysqld    //开机自启mysqld服务
[root@localhost mysql]# ps -ef | grep mysqld    //启动成功
mysql      8329      1  6 17:41 ?        00:00:01 /usr/sbin/mysqld
root       8395   7727  0 17:41 pts/1    00:00:00 grep --color=auto mysqld
#mysql安装完成后,在/var/log/mysql.log文件中为root生成了一个初始密码,所以需要提取出密码才能登陆。
[root@localhost mysql]# grep "temporary password" /var/log/mysqld.log
2020-07-25T09:41:05.604607Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: :aawkJVP+4ZT

#登陆mysql
[root@localhost mysql]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.21 MySQL Community Server - GPL

Copyright (c) 2000, 2020, 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>

三、通用二进制包安装

  同样,首先需要下载二进制包到本地,二进制包下载界面,click here!这里我们选择操作系统类型(Linux - Generic)及版本(Linux -Generic(glibc 2.12)(x86,64-bit)),然后点击Download进入下一个界面。


  右击"No thanks, just start my download.",选择"复制链接地址"。

  复制链接之后,使用wget工具下载到我们的服务器上,再进行后续安装过程。

#安装依赖
[root@localhost ~]# yum install make gcc-c++ cmake bison-devel ncurses-devel readline-devel libaio-devel perl libaio lrzsz libnuma* -y

#卸载Mariadb
[root@localhost ~]# rpm -qa | grep mariadb    //查询是否安装mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@localhost local]# yum remove mariadb-libs-5.5.60-1.el7_5.x86_64 -y    //进行卸载

#关闭防火墙
[root@localhost ~]# systemctl stop firewalld    //关闭firewalld防火墙
[root@localhost ~]# systemctl disable firewalld    //开机不自启
[root@localhost ~]# setenforce 0    //关闭selinux防火墙(临时)
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config    //关闭selinux防火墙(永久,通常需要重启生效,这里配合使用,相当于开机不自启)

#修改系统限制参数,如果不设置,后期可能会出现一些问题。
[root@localhost ~]# cat << EOF >> /etc/security/limits.conf
> #
> ###custom
> #
> * soft nofile      20480    #用户可以打开的最大文件数
> * hard nofile      65535
> * soft nproc       20480    #用户可以打开的最大进程数
> * hard nproc       65535
> EOF
#修改内核参数
[root@localhost ~]# cat << /etc/sysctl.conf >> "EOF"
> vm.swappiness=0    #避免服务器使用swap功能而影响服务器性能
> net.ipv4.tcp_max_tw_buckets = 8000    #系统同时保持TIME_WAIT套接字的最大数量
> net.ipv4.tcp_max_tw_reuse = 1    #允许将TIME-WAIT sockets重新用于新的TCP连接
> net.ipv4.tcp_max_tw_recycle = 1    #更快地回收TIME-WAIT套接字
> net.ipv4.tcp_fin_timeout = 10    #套接字由本端要求关闭,保持在FIN-WAIT-2状态的时间
> net.ipv4.ip_local_port_range = 1024 65535    #TCP/UDP协议允许使用的本地端口号范围
> net.ipv4.tcp_max_syn_backlog = 4096    #对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。
> net.core.somaxconn = 65535    #系统中每一个端口最大的监听队列的长度
> net.core.netdev_max_backlog = 65535    #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目
> net.core.wmem_default = 87380    #默认发送套接字缓存区大小
> net.core.wmem_max = 16777216    #最大发送套接字缓存区大小
> net.core.rmem_default = 87380    #默认接受套接字缓存区大小
> net.core.rmem_max = 16777216    #最大接受套接字缓存区大小
> EOF
[root@nginx-server ~]# sysctl -p    //加载配置文件立即生效

#将通用二进制包下载到/usr/local/src/目录下
[root@localhost ~]# cd /usr/local/src/    //进入/usr/local/src目录下
[root@localhost src]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz    //下载通用二进制包

#进行安装前的准备
[root@localhost src]# groupadd mysql    //创建mysql用户组
[root@localhost src]# useradd -g mysql mysql -d /usr/local/mysql/ -s /sbin/nologin    //创建mysql用户
[root@localhost src]# tar Jxvf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz -C /opt/    //解压安装包到/opt目录下
[root@localhost src]# ln -s /opt/mysql-8.0.21-linux-glibc2.12-x86_64/ /usr/local/mysql    //将mysql的文件目录软连接到/usr/local下
[root@localhost src]# chown -R mysql:mysql /usr/local/mysql/*    //修改目录权限

#初始化数据库
[root@localhost src]# cd /usr/local/mysql/    //进入/usr/local/mysql目录下
[root@localhost mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data    //进行初始化
2020-07-26T06:22:42.118926Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2020-07-26T06:22:42.119182Z 0 [System] [MY-013169] [Server] /opt/mysql-8.0.21-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.21) initializing of server in progress as process 8765
2020-07-26T06:22:42.190349Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-07-26T06:22:47.648317Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-07-26T06:22:49.968436Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: .Y:TpgSuo1yg    #初始密码需要记一下哦!

#创建配置文件,如果文件存在,需要先进行备份
[root@localhost ~]# if [ -f /etc/my.cnf ]; then mv /etc/my.cnf "/etc/my.cnf.`date "+%F %T"`.bak";fi    //备份默认配置文件
[root@localhost ~]# vim /etc/my.cnf    //创建配置文件
[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
server_id=10
port = 3306
user = mysql
character-set-server = utf8
default_storage_engine = innodb
log_timestamps = SYSTEM
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/mysqld.pid
max_connections = 1000
max_connect_errors = 1000
table_open_cache = 1024
max_allowed_packet = 128M
open_files_limit = 65535

#### innodb ####
innodb_buffer_pool_size = 1024M
innodb_file_per_table = 1
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_purge_threads = 2
innodb_flush_log_at_trx_commit = 1
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 16M
innodb_max_dirty_pages_pct = 80
innodb_lock_wait_timeout = 30
innodb_data_file_path=ibdata1:10M:autoextend

#### log ####
log_error = /var/log/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /var/log/mysql-slow.log

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#为mysql提供sysv服务脚本,以便通过start、stop、restart、status等参数来管理服务进程
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld

#设置为开机自启并启动mysql
[root@localhost ~]# chkconfig --add mysqld    //添加为系统服务
[root@localhost ~]# chkconfig mysqld on    //设置开机自启
[root@localhost ~]# systemctl start mysqld    //启动服务
[root@nginx-server ~]# ps -ef | grep mysqld
root      17161      1  0 19:19 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysqld.pid
mysql     17645  17161  1 19:19 ?        00:00:12 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysql-error.log --open-files-limit=65535 --pid-file=/usr/local/mysql/data/mysqld.pid --socket=/tmp/mysql.sock --port=3306
root      17751  16856  0 19:37 pts/2    00:00:00 grep --color=auto mysqld

#配置环境变量,将MySQL的bin目录加入PATH环境变量
[root@localhost mysql]# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
[root@localhost mysql]# source /etc/profile.d/mysql.sh    //加载环境变量文件立即生效

#登陆mysql
[root@nginx-server ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.21

Copyright (c) 2000, 2020, 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> alter user 'root'@'localhost' identified by '*********';    #记得修改密码哦,因为初始化生成的密码不太容易记住哦!

猜你喜欢

转载自blog.csdn.net/weixin_43898125/article/details/107484379