标签 MySQL教程 下的文章

mysql

MySQL数据库是非常重要并且常见的关系型数据库之一,对于它的概念这里就不再做过多的介绍。这篇文章主要是解决你的实际需求,如何在Linux系统安装部署MySQL服务。

1. Mysql数据库安装:

MySQL常见的安装方式有四种,一种是yum/rpm安装,一种是二进制包安装,一种是源码编译安装,还有一种就是通过docker镜像部署。

1.1 如何通过yum部署mysql:

Yum 安装方法很简单,执行命令如下即可:

### Centos 7默认是安装mariadb 5.5,由base源提供,不需要配置其他源:
# 安装:
[root@www.lutixia.cn ~]# yum install –y  mariadb   mariadb-server
# 启动:
[root@www.lutixia.cn ~]# systemctl  start  mariadb
# 连接,mariadb5的版本默认没有初始密码,直接通过MySQL客户端命令连接即可:
[root@www.lutixia.cn ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 5.5.68-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)]> 


### 如果想安装MySQL版本,可以单独配置MySQL仓库(这里是用的清华源,如果直接配置MySQL的外网源速度很慢):
# 配置MySQL的秘钥:
[root@www.lutixia.cn ~]# yum install -y https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql80-community-el7/mysql80-community-release-el7-3.noarch.rpm
# 移除外网源:
[root@www.lutixia.cn ~]# mv /etc/yum.repos.d/mysql-* /tmp/
# 配置国内源:
[root@www.lutixia.cn ~]# cat > /etc/yum.repos.d/mysql.repo <<EOF
[mysql]
name=centos 7 mysql repo
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql80-community-el7/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
EOF

# 安装:
[root@www.lutixia.cn ~]# yum install  mysql mysql-server -y

# 启动:
[root@www.lutixia.cn ~]# systemctl start mysqld
# 连接(用初始密码连接):
[root@localhost ~]# mysql -p'gflm7PSk#&zR'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 8.0.25

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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>

1.2 如何通过二进制包部署mysql:

# 下载二进制包:
[root@www.lutixia.cn ~]# wget  -c  https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.24-el7-x86_64.tar.gz

# 解压缩:
[root@www.lutixia.cn ~]#  tar xf mysql-8.0.24-el7-x86_64.tar.gz 
[root@www.lutixia.cn ~]#  mv mysql-8.0.24-el7-x86_64 /usr/local/mysql
[root@www.lutixia.cn ~]# cd /usr/local/mysql/

# 准备脚本文件:
[root@www.lutixia.cn mysql]# cp support-files/mysql.server  /etc/init.d/mysqld
# 准备配置文件:
[root@www.lutixia.cn mysql]# cat > my.cnf <<EOF
[mysqld]
basedir=/usr/local/mysql/
datadir=/data/mysql/
port=3306
pid-file=/data/mysql/mysql.pid
socket=/tmp/mysql.sock

[mysqld_safe]
log-error=/data/mysql/mysql.log
EOF

# 创建数据目录:
[root@www.lutixia.cn mysql]# mkdir -p /data/mysql
[root@www.lutixia.cn mysql]# chown mysql. /data/mysql

# 无密码初始化:
[root@www.lutixia.cn mysql]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
# 有密码初始化:
[root@www.lutixia.cn mysql]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

# 启动:
[root@www.lutixia.cn  mysql]# /etc/init.d/mysqld start

# 登录:
[root@www.lutixia.cn mysql]# usr/local/mysql/bin/mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 24
Server version: 8.0.24 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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> 

1.3 如何通过源码部署mysql:

# 安装依赖:
[root@www.lutixia.cn ~]# yum install gcc ncurses-devel libaio bison gcc-c++  git cmake   openssl-devel -y

[root@www.lutixia.cn ~]# wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
tar xf boost_1_59_0.tar.gz
[root@www.lutixia.cn ~]# mv boost_1_59_0 /usr/local/boost

[root@www.lutixia.cn ~]# wget http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.28.tar.gz
[root@www.lutixia.cn ~]# tar xf  mysql-5.7.28.tar.gz
[root@www.lutixia.cn ~]# cd mysql-5.7.28

[root@www.lutixia.cn ~]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/usr/local/mysql \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0 \
-DENABLE_DTRACE=0 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost

[root@www.lutixia.cn ~]# make && make install

[root@www.lutixia.cn ~]# mkdir -p /data/mysql
[root@www.lutixia.cn ~]# useradd -s /sbin/nologin mysql
[root@www.lutixia.cn ~]# chown -R mysql. /data/mysql

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

[root@www.lutixia.cn ~]# cat >  /usr/local/mysql/my.cnf  <<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
port=3306
pid-file=/data/mysql/mysql.pid
socket=/tmp/mysql.sock

[mysqld_safe]
log-error=/data/mysql/mysql.log

#初始化
[root@www.lutixia.cn ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/data/mysql \
--basedir=/usr/local/mysql

# 启动:
[root@www.lutixia.cn ~]# /etc/init.d/mysqld start

1.4 如何通过docker部署MySQL:

# 第一步安装docker:
### 配置docker仓库:
[root@www.lutixia.cn ~]# wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

### 安装:
[root@www.lutixia.cn ~]# yum install docker-ce -y

### 启动:
[root@www.lutixia.cn ~]# systemctl start docker

# 第二步替换docker国内仓库(加速):
### 创建daemon配置文件:
[root@www.lutixia.cn ~]# cat >  /etc/docker/daemon.json  <<EOF
{
"registry-mirrors":["http://hub-mirror.c.163.com"]
}
EOF

### 然后重启服务:
[root@www.lutixia.cn ~]# systemctl daemon-reload
[root@www.lutixia.cn ~]# systemctl restart docker


# 第三步下载mysql5.7镜像(版本可以自定义):
[root@www.lutixia.cn ~]# docker pull mysql:5.7
[root@www.lutixia.cn ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        5.7       8b43c6af2ad0   13 days ago   448MB


# 第四步启动MySQL:
[root@www.lutixia.cn ~]# docker run -d --name mysql  -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  -p 3306:3306 mysql:5.7

-d:        后台运行
--name    指定容器名字
-v        把容器中MySQL日志与数据目录映射到物理机的指定路径
-e        设置环境变量(MySQL的root密码)
-p        把容器中的3306端口映射到物理机的3306,这个就可以在物理机直接连接了。

[root@www.lutixia.cn ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED              STATUS              PORTS                                                  NAMES
50a18572f58d   mysql:5.7   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

# 第五步连接MySQL:
[root@www.lutixia.cn ~]#  mysql -uroot -p123456 -h127.0.0.1
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)

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

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

MySQL [(none)]> 

以上就是在centos系统如何安装MySQL的详细教程,如果还有不懂的可以在评论区交流。