MySQL - 安装
序言
本内容是 MySQL-8.0.25 版本在云服务器的 Linux 系统下的安装步骤,Linux 系统为 CentOS 7,所以也会涉及到 systemctl 关于 MySQL 服务的管理。
# 前言
MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。
本内容是 MySQL-8.0.25 版本在 Linux 系统下的安装步骤,Linux 系统为 CentOS 7,所以也会涉及到 systemctl 关于 MySQL 服务的管理。
如果在 Windows 下载安装包:MySQL新版下载地址 (opens new window)。
连接云服务器的 Linux 软件:Xshell 官网 (opens new window)。
上传文件到云服务器的 Linux 软件:Xftp官网 (opens new window)。
# 安装
# 安装条件
CentOs 7 会有默认的
mariadb
数据库,和MySQL
有冲突,所以需要进行卸载先查询
mariadb
版本,再卸载:rpm -qa | grep mariadb yum remove mariadb-libs.x86_64 # 你的版本不一定是 mariadb-libs.x86_64
1
2安装 MySQL 需要的依赖包
libaio
yum install -y libaio
1
# 下载压缩包
如果需要在 Linux 里直接下载,先进入自定义安装目录(我的是
/opt/mysql
),然后执行安装命令:cd /opt/mysql wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.25-linux-glibc2.12-x86_64.tar.gz
1
2这里需要修的是版本号,即
mysql-8.0.25
,根据需求决定Windows 上传安装包到 Linux,我就是这一步
首先需要连接 Linux 的文件上传工具,我的是
Xftp
。在右侧 Linux 选择一个目录,在左侧 Windows 选择压缩包,右键弹出选择列表后,选择传输,即可传输压缩包到 Linux。
# 解压压缩包
进入 MySQL 传输目录,然后解压压缩包到 /usr/local
,解压目录根据需求决定
cd /opt/mysql
tar xvf mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz -C /usr/local
2
不用 zxvf
是因为我的 MySQL 压缩包是 .xz
而不是 .gz
。
前往 /usr/local
目录,我解压后的文件夹名为 mysql-8.0.25-linux-glibc2.12-x86_64
,太长,需要修改名字为 mysql-8.0.25
cd /usr/local
mv mysql-8.0.25-linux-glibc2.12-x86_64 mysql-8.0.25
2
# 创建 MySQL 组和用户
如果已经创建 MySQL 组和用户,无需这一步,没有则创建
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
#创建用户组
groupadd mysql
#创建用户,并添加该用户到组中
useradd -g mysql mysql
#设置密码
passwd mysql
# 输入自定义密码
2
3
4
5
6
7
8
9
10
11
12
我试过不创建 MySQL 组和用户,结果无法启动 MySQL。
# data目录和权限
进入 MySQL 目录并创建 data
目录,其中 data
目录存放数据相关的数据,可自定义名字
cd /usr/local/mysql-8.0.25
mkdir data
2
赋 MySQL 目录权限给 MySQL 组和用户
chown -R mysql.mysql /usr/local/mysql-8.0.25
如果想给所有用户和组拥有 MySQL 的目录可读、可写、执行权限,则赋予权限
chmod -R 777 /usr/local/mysql-8.0.25
第一个 7 表示该文件夹的所有者获得所有权限,这里是 mysql 用户;
第二个 7 表示该文件夹的所有组获得所有权限,这里是 mysql 组;
第三个 7 表示其他用户获得所有权限,这里是非 mysql 组的用户。
我没有执行 777 命令,如果后期出现 权限问题,可以执行该命令。
# 初始化
配置 my.cnf,这是核心配置文件,默认放在
/etc
下vim /etc/my.cnf
1并添加如下配置
[mysqld] # 设置 3306 端口 port=3306 # 设置 mysql 的安装目录 basedir=/usr/local/mysql-8.0.25 # 设置mysql数据库的数据的存放目录 datadir=/usr/local/mysql/data # 允许最大连接数 max_connections=10000 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 # 服务端使用的字符集默认为 UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用「mysql_native_password」插件认证 default_authentication_plugin=mysql_native_password [mysql] # 设置 mysql 客户端默认字符集 default-character-set=utf8 [client] # 设置 mysql 客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24需要修改的内容是第 5 行和第 7 行:
basedir
请填写自己的 MySQL 根目录,datadir
请填写数据 data 目录路径,其他不变。进行 初始化 操作,并记住初始化密码,登录需要
首先进入 MySQL 根目录下的 bin 目录,里面有个
mysqld
命令,拿来初始化cd /usr/local/mysql-8.0.25/bin ./mysqld --initialize
1
2记住初始化密码
# systemctl 管理服务
创建 systemctl
管理 MySQL 的配置文件:
创建配置文件:
vim /usr/lib/systemd/system/mysqld.service
1systemctl
对配置文件的后缀名有所要求、这个文件的后缀名要是以.service
结尾的;当然由于它默认可以省略后缀,所以你也可以不指定后缀名。配置文件填入如下内容:
[Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql-8.0.25/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE = 5000 #Restart=on-failure #RestartPreventExitStatus=1 #PrivateTmp=false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18这里面需要修改的是第 14 行:
ExecStart
请改为自己的 MySQL 目录重新加载配置文件,让
systemctl
识别更新的内容systemctl daemon-reload
1启动 MySQL 服务
systemctl start mysqld ps -ef | grep mysql
1
2开机自启 MySQL 服务
systemctl enable mysqld
1
自此 MySQL 的服务由 systemctl
管理。
# 设置环境变量
每次登录 MySQL 都需要 bin 目录下的 mysql
命令。配置好环境变量,无论在哪里,都可以直接输入 mysql
进行登录。
进入环境变量文件,其他命令如果也要全局使用,也是如此配置
vi /etc/profile
去到最后一行,添加如下内容:MySQL 根目录下的 bin 目录
export PATH=$PATH:/usr/local/mysql-8.0.25/bin
重新载入文件
source /etc/profile
# 登录并修改密码
配置好环境变量后,登录 MySQL
mysql -uroot -p
# 输入你的密码
2
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
# 远程连接配置
让其他地方能连接到你的 MySQL 服务器。
确保成功登录到 MySQL。
切换到 MySQL 数据库,并配置远程连接,并刷新重启:
use mysql
update user set host ='%' where user='root';
FLUSH PRIVILEGES;
2
3
# 问题
启动 MySQL 服务时,报错:
/usr/local/mysql-8.0.25/bin/mysqld start [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
1
2分析:此处 MySQL 是出于安全考虑,默认拒绝用 root 账号启动 MySQL 服务
解决:
通过在命令后面加上 --user=root 进行强制使用root账号启动。这样是最快的
/usr/local/mysql-8.0.25/bin/mysqld start --user=root
1登录到 mysql 用户,启动 MySQL 服务,需要在
my.cnf
文件的底部,添加user=mysql
vim /etc/my.cnf
1
# 导入文件
不登录 MySQL
mysql -u userName -p dabaseName < /opt/mysql/fileName.sql
userName
为用户名
dabaseName
为数据库名
在 < 后填入 sql 文件所在的路径。
登录 MySQL
登录到 MySQL
mysql -u userName -p # 你的密码
1
2选择或者创建数据库
create database glrepair; use glrepair;
1
2导入sql文件
source /opt/mysql/fileName.sql
1source
后填入 sql 文件所在的路径
# 导出文件
导出整个数据库中的所有数据
mysqldump -u userName -p dabaseName > fileName.sql
1导出数据库中的某个表的数据
mysqldump -u userName -p dabaseName tableName > fileName.sql
1导出整个数据库中的所有的表结构
mysqldump -u userName -p -d dabaseName > fileName.sql
1导出整个数据库中某个表的表结构
mysqldump -u userName -p -d dabaseName tableName > fileName.sql
1
userName
:用户名
dabaseName
:数据库名
tableName
:表名
fileName.sql
最好加上路径名
笔记
记得放行 MySQL 端口,即 3306 端口