Linux安装MySQL数据库系统

1、MySQL的编译安装。

1.1、准备工作

(1)为了避免发生端口冲突、程序冲突等现象,建议先查询MySQL软件的安装情况,确认没有使用以RPM方式安装的mysql-server、mysql软件包,否则建议将其卸载。

[root@localhost ~]# rpm -q mysql-server mysql
未安装软件包 mysql-server 
未安装软件包 mysql 

安装光盘自带的ncurses-devel包

[root@localhost ~]# rpm -ivh /mnt/Packages/ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm 

(2)MySQL 5.X系列版本需要cmake编译安装,所以先安装cmake包

[root@localhost mysql]# tar zxf cmake-2.8.6.tar.gz 
[root@localhost mysql]# cd cmake-2.8.6/
[root@localhost cmake-2.8.6]# ./configure 
[root@localhost cmake-2.8.6]# gmake 
[root@localhost cmake-2.8.6]# gmake install

1.2、源码编译安装

1)创建运行用户

为了加强数据库服务的权限控制,建议使用专门的运行用户,不需要登录系统,可以不创建宿主文件夹。

[root@localhost ~]# groupadd mysql  //创建组账户
[root@localhost ~]# useradd -M -s /sbin/nologin mysql -g mysql 

2)解包

将下载的mysql源码包解包,释放到/usr/src目录下,并切换到展开后的源码目录

[root@localhost ~]# cd mysql/
[root@localhost mysql]# tar zxf mysql-5.6.36.tar.gz -C /usr/src

3)配置

-DCMAKE_INSTALL_PREFIX:指定将MySQL数据库程序安装到某目录下,如目录/usr / local/mysql。

-DSYSCONFDIR:指定初始化参数文件目录。

-DDEFAULT_CHARSET:指定默认使用的字符集编码,如utf-8。

-DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci是适用于utf-8字符集的通用规则。

-DWITH_EXTRACHARSETS:指定额外支持的其他字符集编码。

[root@localhost ~]# cd /usr/src/mysql-5.6.36/
[root@localhost mysql-5.6.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all

4)编译并安装

[root@localhost mysql-5.6.36]# make
[root@localhost mysql-5.6.36]# make install

1.3、安装后的其他调整

1)对数据库目录进行权限设置

[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql
//以递归方式设置目录的宿主和属组为mysql

2)建立配置文件

CentOS 7系统下默认支持MairiaDB数据库,因此系统默认的/etc/my.cnf配置文件中是MariaDB的配置文件。而在MySQL源码目录中的support-files文件夹下,提供了MySQL数据库默认的样本配置文件my-default.cnf文件,在启动MySQL数据库服务之前,需要先将原有的my.cnf文件替换为MySQL提供的配置文件内容。

[root@localhost ~]# rm -rf /etc/my.cnf
//将原先etc文件夹下的my.cnf文件删除

[root@localhost ~]# cd /usr/local/mysql/
//切换到mysql的安装目录

[root@localhost mysql]# cp support-files/my-default.cnf /etc/my.cnf
//复制MySQL数据库默认样本配置文件到/etc目录下,并命名为my.cnf

修改my.cnf配置文件中的内容

[client]
default-character-set=utf8

[mysqld]
character_set_server=utf8

3)初始化数据库

为了能够正常使用MySQL数据库系统,应以运行用户mysql的身份执行初始化脚本mysql_install_db,指定数存放目录等

[root@localhost ~]# cd /usr/src/mysql-5.6.36/
[root@localhost mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

4)设置环境变量

为了方便在任何目录下使用mysql命令,需要在/etc/profile设置环境变量

[root@localhost mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@localhost mysql-5.6.36]# . /etc/profile  //立即生效

[root@localhost mysql-5.6.36]# echo $PATH  //查看
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

1.4、添加系统服务

若希望添加mysqld系统服务,以便通过systemctl进行管理,可以直接使用源码包中提供的事务脚本。找到support-files文件夹下的mysql.server脚本文件,将其复制到/usr/local/mysql/bin/目录下,并改名为mysqld.sh,然后创建mysql系统服务的配置文件/usr/lib/systemd/system/mysqld.service,将其添加为mysqld系统服务。

[root@localhost mysql-5.6.36]# cp support-files/mysql.server /usr/local/mysql/bin/mysqld.sh
[root@localhost mysql-5.6.36]# chmod -x /usr/local/mysql/bin/mysqld.sh

[root@localhost ~]# vim /usr/lib/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql

Type=forking
PIDFile=/usr/local/mysql/data/yang.pid
ExecStart=/usr/local/mysql/bin/mysqld.sh start
ExecStop=/usr/local/mysql/bin/mysqld.sh stop

[Install]
WantedBy=multi-user.target

此时就可以使用systemctl工具来控制MySQL数据库服务了

[root@yang ~]# systemctl start mysqld
[root@yang ~]# systemctl status mysqld 
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
   Active: active (running) since 二 2023-12-12 16:57:27 CST; 8s ago
  Process: 10250 ExecStart=/usr/local/mysql/bin/mysqld.sh start (code=exited, status=0/SUCCESS)
 Main PID: 10379 (mysqld)

MySQL服务器默认通过TCP3306端口提供服务,通过编辑/etc/my.cnf配置文件中[mysqld]配置段的"port = 3306"行,可以更改监听端口

[root@yang ~]# netstat -anpt | grep mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      10379/mysqld  
相关推荐
二十雨辰2 小时前
[linux]docker基础
linux·运维·docker
饮浊酒2 小时前
Linux操作系统 ------(3.文本编译器Vim)
linux·vim
lihuhelihu2 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
矛取矛求3 小时前
Linux系统性能调优技巧
linux
One_Blanks3 小时前
渗透测试-Linux基础(1)
linux·运维·安全
Perishell3 小时前
无人机避障——大疆与Airsim中的角速度信息订阅获取
linux·动态规划·无人机
爱吃喵的鲤鱼3 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++
dessler3 小时前
Linux系统-ubuntu系统安装
linux·运维·云计算
荒Huang4 小时前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
hjjdebug6 小时前
linux 下 signal() 函数的用法,信号类型在哪里定义的?
linux·signal