MySQL 数据库安装全攻略

在本文中,将为您详细介绍 MySQL 数据库的两种安装方式:编译安装和二进制安装。无论您是新手还是有一定经验的开发者,相信这篇文章都能为您提供有价值的参考。

一、MySQL 的编译安装

(一)准备工作

首先,如果您的系统中安装有 Mariadb,需要先进行卸载。可以通过以下命令检查并卸载

[root@www ~]# rpm -q mariadb 
mariadb-5.5.52-1.el7.x86_64 
[root@www ~]# yum remove mariadb 

 注意:CentOS 系统默认安装了 mariadb-libs 包,这个包会在 /etc 下生成 Mariadb 的配置文件 my.cnf,所以系统中默认会存在一个 my.cnf 的配置文件。

接下来,安装 MySQL 所需的依赖包

[root@www ~]# yum -y install gcc gcc-c++ ncurses-devel openssl openssl-devel

 这里的 ncurses 是字符终端下屏幕控制的基本库,在 TTY 下登录到主机上运行 MySQL 时需要用到。而 OpenSSL 是一个开放源代码的软件库包,能让应用程序进行安全通信,避免窃听,同时确认另一端连接者的身份。

然后,安装 cmake 编译工具:

[root@www ~]# tar zxf cmake-3.16.2.tar.gz 
[root@www ~]# cd cmake-3.16.2 
[root@www cmake-3.16.2]#./configure 
[root@www cmake-3.16.2]# gmake && gmake install

 最后,安装 boost 库:

[root@www ~]# tar zxvf boost_1_59_0.tar.gz 
[root@www ~]# mv boost_1_59_0/ /usr/local/boost

要知道,Boost 库是为 C++ 语言标准库提供扩展的一些 C++ 程序库的总称,由 Boost 社区组织开发、维护。它能够与 C++ 标准库完美协同工作,并且为其提供扩展功能。而 MySQL 正是使用 C 语言和 C++ 语言编写的。

(二)源码编译及安装 MySQL

1.创建运行用户:

[root@www ~]# useradd -M -s /sbin/nologin mysql

2.解包:

[root@www ~]# tar zxvf mysql-5.7.28.tar.gz 
[root@www ~]# cd mysql-5.7.28

3.配置:

[root@www mysql-5.7.28]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_BOOST=/usr/local/boost

这里的各个参数都有其特定的作用,比如 -DSYSCONFDIR 用于指定初始化配置文件目录,-DDEFAULT_CHARSET 用来指定默认使用的字符集编码,像 utf8 ,而 -DDEFAULT_COLLATION 则指定默认使用的字符集校对规则,如 utf8_general_ci 适用于 UTF-8 字符集的通用规则。-DWITH_EXTRA_CHARSETS 用于指定额外支持的其他字符集编码,-DWITH_BOOST 是指定 boost 库的位置,要注意,MySQL5.7 版本编译安装时必须添加这个参数。

4.编译并安装:

[root@www mysql-5.7.28]# make 
[root@www mysql-5.7.28]# make install

(三)安装后的调整

1.建立配置文件:

[root@www ~]# vim /etc/my.cnf 
[client] 
socket=/usr/local/mysql/data/mysql.sock 

[mysqld] 
socket=/usr/local/mysql/data/mysql.sock 
#绑定监听地址 0.0.0.0 
bind-address = 0.0.0.0 
skip-name-resolve 
#设置 3306 端口 
port = 3306 
# 设置 mysql 的安装目录 
basedir=/usr/local/mysql 
# 设置 mysql 数据库的数据的存放目录 
datadir=/usr/local/mysql/data
# 允许最大连接数 
max_connections=2048 
# 服务端使用的字符集默认为 utf8 
character-set-server=utf8 
# 创建新表时将使用的默认存储引擎 
default-storage-engine=INNODB 
#表名大小写不敏感
lower_case_table_names=1 
#mysql服务允许接受的数据包最大值
max_allowed_packet=16M

[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
#pid-file=/var/run/mariadb/mariadb.pid

需要注意的是,[mysqld_safe] 部分的 log-error 只有在使用 mysqld_safe 启动时才会生成。如果希望在初始化 MySQL 后马上生成这个日志文件,可以将 log-error 写入到 [mysqld] 中。

2.初始化数据库:

[root@www mysql-5.7.28]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

请务必记下初始密码,并且要知道,如果想要重新初始化,需要删除数据目录。

3.设置环境变量:

[root@www mysql-5.7.28]#echo "export PATH=$PATH:/usr/local/mysql/bin">> /etc/profile 
[root@www mysql-5.7.28]#. /etc/profile

(四)添加系统服务

[root@www mysql-5.7.28]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld 
[root@www mysql-5.7.28]# chmod +x /etc/rc.d/init.d/mysqld

将 MySQL 添加为 systemd 标准服务,之后方便使用“systemctl”命令进管理

[root@www ~]# vim /lib/systemd/system/mysqld.service 
[Unit] 
Description=mysqld 
After=network.target 
[Service] 
Type=forking 
ExecStart=/etc/rc.d/init.d/mysqld start 
ExecReload=/etc/rc.d/init.d/mysqld restart 
ExecStop=/etc/rc.d/init.d/mysqld stop 
PrivateTmp=true 
[Install] 
WantedBy=multi-user.target 

[root@www ~]# systemctl daemon-reload 
[root@www ~]# systemctl enable mysqld 
[root@www ~]# systemctl start mysqld
[root@www ~]# systemctl status mysqld
[root@www ~]# netstat -anpt | grep mysqld

至此,源码包编译安装完成。

 

二、MySQL 的二进制安装

(一)基础环境准备

首先执行以下命令:

[root@www ~]# yum -y install gcc vim wget net-tools lrzsz libaio

备注libaio 是 Linux 版本的 aio 库,aio 指的是异步 IO

(二)创建运行用户

[root@www ~]# useradd -M -s /sbin/nologin mysql

(三)关闭防火墙

执行以下命令关闭防火墙:

[root@www ~]# sed -i '/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 
[root@www ~]# setenforce 0 
[root@www ~]# systemctl disable firewalld 
[root@www ~]# systemctl stop firewalld

(四)二进制安装

[root@www ~]# tar zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz 
[root@www ~]# mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql 
[root@www ~]# mkdir /usr/local/mysql/data 
[root@www ~]# chown -R mysql.mysql /usr/local/mysql/data 
[root@www ~]# cd /usr/local/mysql/bin 
[root@www ~]#./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize

(五)设定配置文件

[root@www ~]# vim /etc/my.cnf 
[client] 
socket=/usr/local/mysql/data/mysql.sock 

[mysqld] 
socket=/usr/local/mysql/data/mysql.sock 
bind-address = 0.0.0.0 
skip-name-resolve 
port = 3306 
basedir=/usr/local/mysql 
datadir=/usr/local/mysql/data 
max_connections=2048 
character-set-server=utf8 
default-storage-engine=INNODB 
lower_case_table_names=1 
max_allowed_packet=16M

[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
#pid-file=/var/run/mariadb/mariadb.pid

备注skip-name-resolve 用于跳过名称解析。所谓反向解析是这样的:MySQL 接收到连接请求后,获得的是客户端的 ip ,为了更好地匹配 mysql.user 里的权限记录(某些是用 hostname 定义的)。如果 MySQL 服务器设置了 dns 服务器,并且客户端 ip 在 dns 上并没有相应的 hostname ,那么这个过程会很慢,导致连接等待。添加 skip-name-resolve 以后就可以跳过这个过程了。

然后执行以下命令:

[root@www ~]# echo "export PATH=$PATH:/usr/local/mysql/bin">> /etc/profile 
[root@www ~]#. /etc/profile

(六)配置 systemctl 方式启动

[root@www ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld 
[root@www ~]# chmod +x /etc/rc.d/init.d/mysqld

[root@www ~]# vim /lib/systemd/system/mysqld.service 
[Unit] 
Description=mysqld 
After=network.target 
[Service] 
Type=forking 
ExecStart=/etc/rc.d/init.d/mysqld start 
ExecReload=/etc/rc.d/init.d/mysqld restart 
ExecStop=/etc/rc.d/init.d/mysqld stop 
PrivateTmp=true 
[Install] 
WantedBy=multi-user.target

备注
Type 的不同取值有着不同的含义和适用场景。

  • Type=oneshot 适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
  • Type=notify 与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。
  • Type=dbus 若以此方式启动,当指定的 BusName 出现在 DBus 系统总线上时,systemd 认为服务就绪。
  • Type=idle 意味着 systemd 会等待所有任务处理完成后,才开始执行 idle 类型的单元。其他行为与 Type=simple 类似。
  • Type=forking 表示 systemd 认为当该服务进程 fork ,且父进程退出后服务启动成功。对于常规的守护进程( daemon ),除非您确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile= ,以便 systemd 能够跟踪服务的主进程。
  • Type=simple 表示 systemd 认为该服务将立即启动。服务进程不会 fork 。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是 socket 激活型。

备注:在 Linux 中,fork 函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。当一个进程调用 fork() 函数后,系统先给新的进程分配资源,然后把原来的进程的所有值都复制到新的新进程中。这样就把新的进程创建了出来,在 fork 函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。当子进程创建好后,这个父进程就退出,也代表该服务创建成功。

接下来执行以下命令:

[root@www ~]# systemctl daemon-reload 
[root@www ~]# systemctl enable mysqld 
[root@www ~]# systemctl start mysqld 
[root@www~]# netstat -tunlp|grep 3306

(七)访问 MySQL 数据库

[root@www ~]# mysql -u root -p
mysql>set password =password('pwd123');

希望通过上述详细的步骤和说明,能够帮助您顺利完成 MySQL 数据库的安装,并能够正常使用。祝您在数据库的世界中畅游无阻!

 


 

 

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值