1.MySQL 简介
待补充…(其实上网查查就知道了)
2.MySQL 安装
由于我的 MySQL
主要是用在 Linux
的,所以这里只简单介绍一下云服务器下使用 XShell
操作 CentOS 7
的 MySQL
安装,其他操作系统的可能需要其他的方法。
2.1.切换用户
一般涉及到启动系统服务的操作都需要使用 root
权限,因此您最好提前切换到 root
账户。
2.2.检查环境
使用 ps ajx | grep mysql或mariadb
检查是否存在 mysql或mariadb
(会显示一串目录),有就无需看后续的安装了。
但是如果您想体验一下下载 MySQL
的流程,请使用 systemctl stop mysql或mariadb.service
指令停止 mysql或mariadb
服务。然后使用 rpm -qa | grep mysql
检查 mysql或mariadb
的安装包,使用 rpm -qa | grep mysql或mariadb | xargs yum remove
卸载这些关于 mysql
的安装包,此时您的系统就卸载了 MySQL或mariadb
了。
补充:
MariaDB
是一个开源的关系型数据库管理系统(RDBMS
),它是 MySQL 的一个分支,由MySQL
的创始人之一Michael Widenius
(又称Monty
)创建。MariaDB
基于MySQL
的代码,并且在GPL
许可证下发布,使得它可以免费使用和分发。MariaDB
旨在提供高性能、可扩展性、稳定性和安全性。
MariaDB
和MySQL
拥有类似的命令和语法,而且它们非常相似,但是MariaDB
包含了一些新的功能,例如更好的性能、更好的安全性、更好的可扩展性和更丰富的功能。MariaDB
中还包含一些MySQL
没有的特性,例如虚拟列、动态列、回收站等功能。此外,MariaDB 也支持多个存储引擎,例如InnoDB
、MyISAM
、XtraDB
等。
MariaDB
还提供了与MySQL
兼容的API
和命令行工具,使得用户可以很容易地将其现有的MySQL
数据库迁移到MariaDB
上。对于使用MySQL
的应用程序或网站,转换到MariaDB
也非常简单。
2.3.更新 yum 源
在 MySQL 官方链接上 查找适合自己的 MySQL yum
源版本(否则有可能出现兼容问题)。
[FILE] mysql80-community-release-el7-..> 18-Apr-2018 05:24 25k
[FILE] mysql80-community-release-el7-..> 23-Aug-2023 17:38 11k
[FILE] mysql80-community-release-el7-..> 18-Jan-2019 06:02 25k
[FILE] mysql80-community-release-el7-..> 24-Apr-2019 18:29 25k
[FILE] mysql80-community-release-el7-..> 04-Nov-2021 10:25 7k
[FILE] mysql80-community-release-el7-..> 14-Jan-2022 10:21 11k
[FILE] mysql80-community-release-el7-..> 24-Apr-2022 13:02 11k
[FILE] mysql80-community-release-el7-..> 26-Aug-2022 18:56 11k
[FILE] mysql80-community-release-el7-..> 25-Jul-2023 18:43 11k
[FILE] mysql80-community-release-el7-..> 25-Jul-2023 18:41 11k
[FILE] mysql80-community-release-el7.rpm 23-Aug-2023 17:38 11k
或者右键该网页界面,然后“查看网页源代码”,可以显示较多的信息
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el5-7.noarch.rpm">mysql57-community-release-el5-..></A> 12-Nov-2015 07:58 8k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el5-8.noarch.rpm">mysql57-community-release-el5-..></A> 07-Apr-2017 07:28 24k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el5.rpm">mysql57-community-release-el5.rpm</A> 07-Apr-2017 07:28 24k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el6-10.noarch.rpm">mysql57-community-release-el6-..></A> 07-Apr-2017 07:28 25k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el6-11.noarch.rpm">mysql57-community-release-el6-..></A> 27-Apr-2017 10:45 25k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el6-7.noarch.rpm">mysql57-community-release-el6-..></A> 12-Nov-2015 07:58 9k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el6-8.noarch.rpm">mysql57-community-release-el6-..></A> 11-Apr-2016 09:13 9k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el6-9.noarch.rpm">mysql57-community-release-el6-..></A> 12-Sep-2016 13:05 9k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el6.rpm">mysql57-community-release-el6.rpm</A> 27-Apr-2017 10:45 25k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el7-10.noarch.rpm">mysql57-community-release-el7-..></A> 07-Apr-2017 07:28 25k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el7-11.noarch.rpm">mysql57-community-release-el7-..></A> 27-Apr-2017 10:45 25k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el7-7.noarch.rpm">mysql57-community-release-el7-..></A> 12-Nov-2015 07:58 9k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el7-8.noarch.rpm">mysql57-community-release-el7-..></A> 11-Apr-2016 09:13 9k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el7-9.noarch.rpm">mysql57-community-release-el7-..></A> 12-Sep-2016 13:05 9k
<IMG SRC="/icons/generic.gif" ALT="[FILE]"> <A HREF="mysql57-community-release-el7.rpm">mysql57-community-release-el7.rpm</A> 27-Apr-2017 10:45 25k
这里我根据我的系统版本选择了 mysql57-community-release-el7-9.noarch.rpm(点击即可下载),这里的 57
是 MySQL yum
源的版本(这个版本用的人较多),el
指 CentOS
,而 7-9
就是指 CentOS 7-9
版本(如果您使用的是 CentOS 7
系统但是没有找到对应的版本,就下载 mysql57-community-release-el7.rpm 即可)。然后得到一个 MySQL
的 .rpm
后缀的文件。
[root@VM-8-9-centos ljp]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
新建一个 MySQL
目录,如果您之前下载的安装包在 Windows
下,就使用 rz
指令将其上传到 XShell
下的 CentOS 7
系统内刚刚新建的 MySQL
目录里。
# mkdir MySQL
# cd MySQL
# rz
# ls
mysql57-community-release-el7-9.noarch.rpm
接下来使用 rpm -ivh mysql57-community-release-el7-9.noarch.rpm
更新 yum
源(可以使用 ls /etc/yum.repos.d/ -l
来查看前后是否有变化)。
# ls /etc/yum.repos.d/ -l
total 52
-rw-r--r-- 1 root root 614 Jul 15 18:28 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 Nov 23 2020 CentOS-CR.repo
-rw-r--r-- 1 root root 649 Nov 23 2020 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root 230 Jul 15 18:28 CentOS-Epel.repo
-rw-r--r-- 1 root root 314 Nov 23 2020 CentOS-fasttrack.repo
-rw-r--r-- 1 root root 630 Nov 23 2020 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 Nov 23 2020 CentOS-Sources.repo
-rw-r--r-- 1 root root 8515 Nov 23 2020 CentOS-Vault.repo
-rw-r--r-- 1 root root 616 Nov 23 2020 CentOS-x86_64-kernel.repo
-rw-r--r-- 1 root root 1358 Sep 5 2021 epel.repo
-rw-r--r-- 1 root root 1457 Sep 5 2021 epel-testing.repo
# rpm -ivh mysql57-community-release-el7-9.noarch.rpm
warning: mysql57-community-release-el7-9.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql57-community-release-el7-9 ################################# [100%]
# ls /etc/yum.repos.d/ -l
total 60
-rw-r--r-- 1 root root 614 Jul 15 18:28 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 Nov 23 2020 CentOS-CR.repo
-rw-r--r-- 1 root root 649 Nov 23 2020 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root 230 Jul 15 18:28 CentOS-Epel.repo
-rw-r--r-- 1 root root 314 Nov 23 2020 CentOS-fasttrack.repo
-rw-r--r-- 1 root root 630 Nov 23 2020 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 Nov 23 2020 CentOS-Sources.repo
-rw-r--r-- 1 root root 8515 Nov 23 2020 CentOS-Vault.repo
-rw-r--r-- 1 root root 616 Nov 23 2020 CentOS-x86_64-kernel.repo
-rw-r--r-- 1 root root 1358 Sep 5 2021 epel.repo
-rw-r--r-- 1 root root 1457 Sep 5 2021 epel-testing.repo
-rw-r--r-- 1 root root 1416 Sep 12 2016 mysql-community.repo #支持直接安装MySQL
-rw-r--r-- 1 root root 1440 Sep 12 2016 mysql-community-source.repo #支持安装相关的资源
使用 yum list | grep mysql
检查是否已经更新,如果弹出很多的 MySQL
相关资源文件,那就更新 yum
源成功,而之前下载的 mysql57-community-release-el7-9.noarch.rpm
就可以删除了(当然也可以选择不删除,主要是留着也没太多用处)。
2.4.安装 MySQL
使用 yum install -y mysql-community-server
一键安装 MySQL
即可。
2.5.安装问题
如果出现以下问题:
Failing package is: mysql-community-common-5.7.43-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
那就是密钥过期的问题,可以使用下面命令来更新密钥:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
然后重新使用 yum install -y mysql-community-server
即可。
2.6.检查安装
在 etc
下会多一个 my.cnf
文件,且使用 which mysql mysqld
可以打印出结果。
# which mysql mysqld
/usr/bin/mysql #这个是MySQL的客户端
/usr/sbin/mysqld #这个是MySQL的服务端
3.MySQL 启动
使用 systemctl start mysqld
启动 MySQL
的服务端,使用 ps
可以查看是否启动成功:
# systemctl start mysqld
# ps ajx | grep mysqld
1 8880 8879 8879 ? -1 Sl 27 0:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
10652 9013 9012 5510 pts/0 9012 S+ 0 0:00 grep --color=auto mysqld
此时可以使用 netstat -nltp
来查看端口号(后面会讲)
4.MySQL 登录
4.1.登录方法一
使用 sudo grep 'temporary password' /var/log/mysqld.log
获取临时 root
密码,较老的版本可以使用,新版本可能不行。然后使用 mysql -u root -p
输入临时密码即可,注意输入密码的时候不会回显。
4.2.登录方法二
直接使用 mysql -u root -p
登录。
4.3.登录方法三
使用 vim /etc/my.cnf
打开 MySQL
的配置文件,然后在文件的最后添加上 skip-grant-tables
选项,保存退出(该做法就是设置为“跳过密码验证”)。
使用 systemctl restart mysqld
重启 MySQL
服务,然后使用 mysql -u root -p
即可直接登录 MySQL
(可能还会显示输入密码,但是这次直接回车就可以)。
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.43
Copyright (c) 2000, 2023, 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>
5.MySQL 配置
5.1.配置编码问题
打开 /etc/my.cnf
修改内容如下:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
# ---My configuration_1---
# port=3306 # 可以不改,改了端口可能会出现一些问题,先使用默认的即可
# ------------------------
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# ---My configuration_2---
character-set-server=utf8
default-storage-engine=innodb
# ------------------------
然后使用 systemctl restart mysqld
重启 MySQL
服务即可。
5.2.配置开机启动
使用 systemctl enable mysqld
和 systemctl daemon-reload
即可。但是有一说一,云服务器一般不需要关机,几乎用不到这个功能。