LINUX上实现MySQL数据库的安装

MySQL数据库的安装

1、MySQL数据库通用二进制格式安装过程实现

实验在CentOS7上,用到的包是mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz

1.1 准备用户

#创建用户名并指定家目录
[root@CentOS7M ~]# useradd -r -d /data/mysql mysql
[root@CentOS7M ~]# id mysql
uid=997(mysql) gid=995(mysql) groups=995(mysql)
[root@CentOS7M ~]# 

1.2 准备数据目录

[root@CentOS7M ~]# mkdir /data/mysql
[root@CentOS7M ~]# chown mysql:mysql /data/mysql/
[root@CentOS7M ~]# ll -d /data/mysql/
drwxr-xr-x 4 mysql mysql 176 Feb 15 22:03 /data/mysql/

1.3 准备二进制程序

[root@CentOS7M ~]# tar xvf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@CentOS7M ~]# cd /usr/local/
[root@CentOS7M local]# ln -sv mysql-5.6.46-linux-glibc2.12-x86_64/ mysql
‘mysql’ -> ‘mysql-5.6.46-linux-glibc2.12-x86_64/’
[root@CentOS7M ~]# chown -R root:root /usr/local/mysql/

1.4 准备配置文件

[root@CentOS7M ~]# cd /usr/local/mysql/
[root@CentOS7M mysql]# ls support-files/
binary-configure  my-default.cnf       mysql-log-rotate
magic             mysqld_multi.server  mysql.server
[root@CentOS7M ~]# cp -b support-files/my-default.cnf /etc/my.cnf
[root@CentOS7M ~]# vim /etc/my.cnf
#mysql语句块中添加以下三个选项
[mysqld]
datadir= /data/mysql/   
innodb_file_per_table = on    #在mariadb5.5以上版的是默认值,可不加
skip_name_resolve = on        ##禁止主机名解析,建议使用

1.5 创建数据库文件

[root@CentOS7M ~]#cd /usr/local/mysql/
[root@CentOS7M mysql]# ./scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper     #缺少文件
[root@CentOS7M mysql]# yum list |grep Perl |grep -i dumper
[root@CentOS7M mysql]# yum install perl-Data-Dumper  #安装解决
[root@CentOS7M mysql]# ./scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
[root@CentOS7M mysql]# yum install libaio   #安装解决

1.6 准备服务脚本,并启动服务

[root@CentOS7M mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@CentOS7M mysql]# chkconfig --add mysqld
[root@CentOS7M mysql]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
netconsole     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
[root@CentOS7M mysql]# service mysqld start
Starting MySQL.Logging to '/data/mysql/CentOS7M.swyer.club.err'.
 SUCCESS! 
#如果有对应的service 文件可以执行下面
cp support-files/systemd/mariadb.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable --now mariadb

1.7 PATH路径

[root@CentOS7M mysql]# echo "PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh
[root@CentOS7M mysql]# source /etc/profile.d/mysql.sh 
[root@CentOS7M mysql]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

1.8 安全初始化

[root@CentOS7M ~]# mysql_secure_installation 

2、源码编译安装

这里以mariadb-10.2.31.tar.gz为例,在CenOS7上进行

2.1 安装相关依赖包

[root@CentOS7 ~]# yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdevel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel -y

2.2 做准备用户和数据目录

[root@CentOS7 ~]# useradd -r -s /sbin/nologin -d /data/mysql mysql
[root@CentOS7 ~]# getent passwd mysql
mysql:x:988:982::/data/mysql:/sbin/nologin

2.3 准备数据库目录

[root@CentOS7 ~]# mkdir /data/mysql
[root@CentOS7 ~]# chown mysql:mysql /data/mysql
[root@CentOS7 ~]# ll -d /data/mysql/
drwxr-xr-x 2 mysql mysql 6 Feb 16 10:12 /data/mysql/
[root@CentOS7 ~]# 

2.4 源码编译安装

利用cmake编译,而利用传统方法,cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译

2.4.1 下载并解压缩源码包
[root@CentOS7 ~]# tar xvf /data/mariadb-10.2.31.tar.gz 
2.4.2 源码编译安装mariadb
[root@CentOS7 ~]# cd /data/mariadb-10.2.31/
[root@CentOS7 mariadb-10.2.31]#[root@CentOS7 mariadb-10.2.31]# cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
[root@CentOS7 mariadb-10.2.31]# make && make install


2.5 准备环境变量

[root@CentOS7 ~]# echo 'PATH=/app/mysql/bin:$PATH' >/etc/profile.d/mysql.sh
[root@CentOS7 ~]# source /etc/profile.d/mysql.sh 
[root@CentOS7 ~]# 

2.6 生成数据库文件

[root@CentOS7 ~]# cd /app/mysql/
[root@CentOS7 mysql]# scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
[root@CentOS7 mysql]# ls /data/mysql/
aria_log.00000001  ib_buffer_pool  ib_logfile0  mysql               test
aria_log_control   ibdata1         ib_logfile1  performance_schema

2.7 准备配置文件

[root@CentOS7 ~]# cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
[root@CentOS7 ~]# 

2.8 准备启动脚本,并启动服务

[root@CentOS7 ~]# cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@CentOS7 ~]# chkconfig --add mysqld
[root@CentOS7 ~]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
netconsole     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
[root@CentOS7 ~]# service mysqld start
Starting mysqld (via systemctl):                           [  OK  ]
[root@CentOS7 ~]# 

2.9 安全初始化

[root@CentOS7 ~]# mysql_secure_installation 

3、实战案例:二进制安装安装MySQL 5.7

以下实验用到的版本为:mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz

3.1 安装相关包

[root@CentOS7 ~]# yum install libaio numactl-libs -y

3.2 创建用户和组

[root@CentOS7 ~]# groupadd mysql
[root@CentOS7 ~]# useradd -r -g mysql -s /bin/false mysql
[root@CentOS7 ~]# id mysql
uid=988(mysql) gid=1001(mysql) groups=1001(mysql)

3.3 准备程序文件

[root@CentOS7 ~]# tar xvf /data/mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@CentOS7 ~]# cd /usr/local/
[root@CentOS7 local]# ln -s mysql-5.7.27-linux-glibc2.12-x86_64/ mysql
[root@CentOS7 local]# chown -R root.root /usr/local/mysql/

3.4 准备环境变量

[root@CentOS7 local]# echo 'PATH=/usr/local/mysql/bin:$PATH' >/etc/profile.d/mysql.sh
[root@CentOS7 local]# . /etc/profile.d/mysql.sh 

3.5 准备配置文件

[root@CentOS7 local]# cp /etc/my.cnf{,.bak}
[root@CentOS7 ~]# vim /etc/my.cnf
[root@CentOS7 ~]# cat /etc/my.cnf
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
# 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
[client]
socket=/data/mysql/mysql.sock

3.6 生成数据库文件,并提取root密码

[root@CentOS7 ~]# mysqld --initialize --user=mysql --datadir=/data/mysql
[root@CentOS7 ~]# grep password  /data/mysql/mysql.log 
2020-02-16T12:53:04.884282Z 1 [Note] A temporary password is generated for root@localhost: l(b,V7tLEtg;
[root@CentOS7 ~]# awk '/temporary password/{print $NF}' /data/mysql/mysql.log
l(b,V7tLEtg;

3.7 准备服务脚本和启动

[root@CentOS7 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@CentOS7 ~]# chkconfig --add mysqld
[root@CentOS7 ~]# service mysqld start
Starting MySQL. SUCCESS! 

3.8 修改口令

[root@CentOS7 ~]# mysqladmin -uroot -p'l(b,V7tLEtg;' password swyer
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

3.9 测试登录

[root@CentOS7 ~]# mysql -uroot -pswyer

4、实战案例:CentOS 8实现MySQL的多实例

4.1 实验目的

CentOS yum安装mariadb-10.3.17并实现三个实例

4.2 环境要求

一台系统CentOS 8.X主机

4.3 前提准备

关闭SElinux
关闭防火墙
时间同步

4.4 实现步骤

4.4.1 安装mariadb
[root@CentOS8-1 ~]# yum install mariadb-server -y
4.4.2 准备三个实例的目录
[root@CentOS8-1 ~]# mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
[root@CentOS8-1 ~]# chown -R mysql.mysql /mysql
[root@CentOS8-1 ~]# tree -d /mysql
/mysql
├── 3306
│   ├── bin
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   └── socket
├── 3307
│   ├── bin
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   └── socket
└── 3308
    ├── bin
    ├── data
    ├── etc
    ├── log
    ├── pid
    └── socket

21 directories

4.4.3 生成数据库文件
[root@CentOS8-1 ~]# mysql_install_db --datadir=/mysql/3306/data --user=mysql
[root@CentOS8-1 ~]# mysql_install_db --datadir=/mysql/3308/data --user=mysql
[root@CentOS8-1 ~]# mysql_install_db --datadir=/mysql/3309/data --user=mysql

4.4.4 准备配置文件
[root@CentOS8-1 ~]# vim /mysql/3306/etc/my.cnf
[mysqld]
port=3306
datadir=/mysql/3306/data
socket=/mysql/3306/socket/mysql.sock
log-error=/mysql/3306/log/mariadb.log
pid-file=/mysql/3306/pid/mariadb.pid
#重复上面步骤设置3307,3308
4.4.5 准备启动脚本
[root@CentOS8-1 ~]# cat /mysql/3306/bin/mysqld 
#!/bin/bash
port=3306
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/bin"
mysql_basedir="/mysql"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"
function_start_mysql()
{
	if [ ! -e "$mysql_sock" ];then
		printf "Starting MySQL...\n"
		${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
	else
		printf "MySQL is running...\n"
		exit
	fi
}
function_stop_mysql()
{
	if [ ! -e "$mysql_sock" ];then
		printf "MySQL is stopped...\n"
		exit
	else
		printf "Stoping MySQL...\n"
		${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
	fi
}
function_restart_mysql()
{
	printf "Restarting MySQL...\n"
	function_stop_mysql
	sleep 2
	function_start_mysql
}
case $1 in
	start)
		function_start_mysql
		;;
	stop)
		function_stop_mysql
		;;
	restart)
		function_restart_mysql
		;;
	*)
		printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac
[root@CentOS8-1 ~]# 
[root@CentOS8-1 ~]# chmod +x /mysql/3306/bin/mysqld 
#重复上述过程,分别建立3307,3308的启动脚本,并加上在执行权限
4.4.6 启动服务
[root@CentOS8-1 ~]# /mysql/3306/bin/mysqld start
Starting MySQL...
[root@CentOS8-1 ~]# /mysql/3307/bin/mysqld start
Starting MySQL...
[root@CentOS8-1 ~]# /mysql/3308/bin/mysqld start
Starting MySQL...
[root@CentOS8-1 ~]# ss -ntl
State    Recv-Q    Send-Q        Local Address:Port         Peer Address:Port    
LISTEN   0         128                 0.0.0.0:22                0.0.0.0:*       
LISTEN   0         100               127.0.0.1:25                0.0.0.0:*       
LISTEN   0         128                    [::]:22                   [::]:*       
LISTEN   0         100                   [::1]:25                   [::]:*       
LISTEN   0         80                        *:3306                    *:*       
LISTEN   0         80                        *:3307                    *:*       
LISTEN   0         80                        *:3308                    *:*  

4.4.7 登录实例
#两种登录方法,登录之前确保端口开着ss -ntl
[root@CentOS8-1 ~]# mysql -h127.0.0.1 -P3306
[root@CentOS8-1 ~]# mysql -uroot -S /mysql/3306/socket/mysql.sock 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.3.17-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show variables like 'port'
    -> ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.001 sec)

MariaDB [(none)]> 
#停止服务需要输入密码
[root@CentOS8-1 ~]# /mysql/3306/bin/mysqld stop
Stoping MySQL...
Enter password: 
[root@CentOS8-1 ~]# 
[root@CentOS8-1 ~]# /mysql/3306/bin/mysqld start
Starting MySQL...
[root@CentOS8-1 ~]# 
4.4.8 修改root密码
#修改root口令
[root@CentOS8-1 ~]# mysqladmin -uroot -S /mysql/3306/socket/mysql.sock password 'swyer'
[root@CentOS8-1 ~]# mysqladmin -uroot -S /mysql/3307/socket/mysql.sock password 'swyer'
[root@CentOS8-1 ~]# mysqladmin -uroot -S /mysql/3308/socket/mysql.sock password 'swyer'
[root@CentOS8-1 ~]# 
#或者登录mysql,执行下面也可以
Mariadb>update mysql.user set password=password(“centos”) where user=’root’;
Mariadb>flush privileges;
#重复步骤,分别修改别外两个实例3307,3308对应root口令
4.4.9 测试
#需要键入密码才能登录
[root@CentOS8-1 ~]# mysql -uroot -p -S /mysql/3306/socket/mysql.sock 
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.3.17-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

发布了12 篇原创文章 · 获赞 0 · 访问量 408

猜你喜欢

转载自blog.csdn.net/swyer_66/article/details/104436579