CentOs8安装Mysql8

CentOs8安装Mysql8.x

  • 简介
  • 安装环境介绍
  • 1. 下载
    • 1.1. 在MYSQL官网找到社区版下载地址
    • 1.2. 在MYSQL社区版下载网页中选择你的操作系统及安装系统版本
  • 2. 安装
    • 2.1. 解压与配置环境变量。
    • 2.2. 初始化数据库、启动数据库、登录数据库、修改密码。
  • 3. 配置自动启动[非必选]
  • 4. 配置本机访问远程服务器上的mysql服务[非必选]
    • 4.1. 关闭防火墙对mysql端口的限制
    • 4.2. 在服务器上修改或创建一个可以支持远程访问的账号
    • 4.3. 在本地机器上连接服务器上的mysql服务

简介

在CentOs下安装Mysql8非常简单,只需要下载、安装、配置自动启动这三个步骤即可。配置自动启动是可选项,一般来说都需要设置自动启动。

安装环境介绍

笔者使用的是xx云服务器厂商的轻量应用服务器。内置了兼容CentOS8系统的Linux操作系统。在安装时找不到CentOS8,所以笔者就安装此系统将他当作CentOS8使用。

1. 下载

找到对应系统的安装包的下载链接后,可通过shell工具上传,也可直接在linux端使用wget命令直接下载至指定目录。

1.1. 在MYSQL官网找到社区版下载地址

打开mysql官网点击头部导航中的Downloads栏打开下载界面。
点击MySQL Community (GPL) Downloads »进入Mysql社区版的下载界面
今天我们要安装的是Mysql服务器,所以选择列表中的 MySQL Community Server 项目

1.2. 在MYSQL社区版下载网页中选择你的操作系统及安装系统版本

CentOs8安装Mysql8_第1张图片
这里我的系统为x86的64位的linux系统。所以选择Linux - Generic后选择列表中的第一项进行下载

CentOs8安装Mysql8_第2张图片
点击右侧的download按钮进入下载登录页,后选择底部的 No thanks, just start my download.链接进行下载。

注:此时下载的包会在你的电脑中,可自行选择shell工具进行上传,也可从浏览器中提取下载地址后在linux使用wget命令直接下载至linux端中。

这里提供笔者的下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz

在linux中直接下载使用wget命令,可将安装包下载至当前目录。

wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz

2. 安装

安装主要将刚下载的安装包进行解压、然后配置环境变量让linux可以直接执行命令、最后初始化数据库并修改初始账号的密码后就能正常使用啦。

2.1. 解压与配置环境变量。

按照上面下载的步骤将安装包放到我们要安装的机器上后,使用tar命令将他解压至/usr/local目录中,并修改解压后的目录名称。
因为在后面要运行的脚本中,默认都指定安装目录是/usr/local/mysql这个位置,为了不必要的麻烦,我们就直接安装在这了。

# 解压至指定目录。这里需要注意。笔者的安装包是这个,各位读者需要自己注意安装包名称是否一致。
# 这里不展开说明tar命令了。各位同好有兴趣自己浏览。
tar -zvxf mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz -C /usr/local
# 修改mysql目录名称。
mv /usr/local/mysql-8.0.33-linux-glibc2.28-x86_64 /usr/local/mysql

前面都没问题的话就可以修改环境变量并初始化数据库了。

# 使用vim命令打开环境变量配置文件
vim /etc/profile
# 按PageDown键,将光标移动到文件最后端键入下面两行内容。
# 按i键进入编辑文档模式。即可输入内容。
export MYSQL_HOME=/usr/local/mysql # 这里笔者的目录是这个,如果改了安装目录的需自行修改。

export PATH=$PATH:MYSQL_HOME/bin; # 将二进制执行路径拼接到原path后方。

# 按键盘的Esc键退出编辑模式,并直接输入两个大写的字母Z,即可退出并保存该文件。
# 然后使用source命令重新加载此配置文件使配置生效。
source /etc/profile

这时我们就可以使用mysql的bin目录中的二进制命令了。

2.2. 初始化数据库、启动数据库、登录数据库、修改密码。

按照上面的教程配置好后,使用mysqld --initialize对数据库进行初始化,这时他会给一个默认的账号密码。我们可以对该账号的密码进行修改。后续就可以通过此账号密码使用数据库了。

# 使用mysqld命令初始化数据库。 mysqld命令的路径已经被包含在环境配置中的PATH路径上了。所以这里可以直接执行。
mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize

# 下面是输出内容
2023-05-29T03:49:56.481868Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.33) initializing of server in progress as process 39315
2023-05-29T03:49:56.489884Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-05-29T03:49:57.417576Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-05-29T03:49:59.479434Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 06A+0Rau9neo

可以看到默认账号为root,默认密码为06A+0Rau9neo

# 进入数据库中的support-files目录
cd /usr/local/mysql/support-files/
# 使用mysql.server start 命令启动mysql服务
./mysql.server start
# 这时一般会看到以下报错。
# Starting MySQL.Logging to '/usr/local/mysql/data/VM-12-5-xxx.err'.
#  ERROR! The server quit without updating PID file (/usr/local/mysql/data/VM-12-5-opencloudos.pid).
# 这是由于mysql服务器启动失败导致的。我们需要修改一下这个文件,让他可以正常启动mysql服务。
vim /usr/local/mysql/support-files/mysql.server
# 在vim中 set nu打开行号显示
:set nu
# 找到 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null & wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$? 这句话。笔者这里是266行的位置,读者需要自己在266行附近寻找
# 这句命令会使用mysqld_safe来启动mysql服务,但如果使用root账号使用这个服务需要增加一个启动用户的参数。我们这里正巧使用的是root账号。所以对他进行如下修改。

# 使用i键进入输入模式,在$bindir/mysqld_safe 后方,--datadir="$datadir"前方增加 --user=root这个参数如:$bindir/mysqld_safe --user=root --datadir="$datadir"
# 修改好后按ESC键退出编辑模式,输入两个大写的Z字母退出并保存。
# 然后我们再次启动服务。这次我们可以看到启动成功。
./mysql.server start 
# Starting MySQL.Logging to '/usr/local/mysql/data/VM-12-5-opencloudos.err'.
#  SUCCESS! 

此时我们就可以用刚刚初始化时系统提供的账号密码进行登录。

mysql -u root -p
# 输入你的默认密码,笔者这里是06A+0Rau9neo,密码输入正确后会看到以下信息
# Enter password: 
# Welcome to the MySQL monitor.  Commands end with ; or \g.
# Your MySQL connection id is 8
# Server version: 8.0.33

# 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> 

# 由于给的默认密码太随机,根本记不住。所以我们需要给他改一个正常的密码。
alter user 'root'@'localhost' identified by 'root';
# 语法没问题就可以看见 Query OK, 0 rows affected (0.01 sec)。
# 这时我们使用exit命令退出数据库并重新使用新密码链接。发现已经可以正常使用。
exit

mysql -u root -p

3. 配置自动启动[非必选]

如果此时服务器突然宕机,那么重启后是不会自动启动我们的mysql服务的。为了避免每次都需要手动启动,可以给他配置一个自启项。

# 将mysql启动文件丢到init.d目录中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 配置mysql自启
chkconfig --add mysqld
chkconfig mysqld on

4. 配置本机访问远程服务器上的mysql服务[非必选]

基于以上的配置,mysql基本的部署算是完成了,如果开发者需要方便调试,那么可以给服务器配置一个账号,以达到远程访问调试mysql的目的。

配置本机访问远程服务器上的mysql服务总共就2个步骤:1. 关闭防火墙对mysql端口的限制 2. 在服务器上修改或创建一个可以支持远程访问的账号

4.1. 关闭防火墙对mysql端口的限制

如果没有对mysql的默认端口做修改,一般默认为3306,如果读者修改了端口号则需要将3306替换为自己的端口号。

# 防火墙开放3306端口的tcp连接
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙后生效
firewall-cmd --reload

将防火墙关闭后,此时本机可以对服务器上的3306端口进行数据收发了。不过有些云服务器的防火墙需要在云服务器的控制面板处进行关闭。

4.2. 在服务器上修改或创建一个可以支持远程访问的账号

因为mysql默认的给账号都只能支持本地连接,所以这步有两个选项:1. 将原本的root账号从仅支持本地访问修改为支持远程访问。 2. 创建一个支持远程访问的账号,并且将数据库权限赋予该账号。

# 使用mysql命令连上数据库后
mysql -u root -p
  1. 创建一个支持远程访问的账号。然后将数据库的访问权限授予此账号(推荐,相较于修改root账号的方式,权限范围更小)
# 创建账号 username 就是自定的账号名 % 指的是所有地址 123456就是密码,读者根据自己的需要修改。
create user 'username'@'%' identified by '123456';

-- 授予操作增删改,这个例子授予的是test库中的所有表(也可指定某一张表的权限),授予账号为 所有地址的username账号(即为我们刚刚创建的账号)。
GRANT SELECT, UPDATE, DELETE, INSERT ON test.* TO 'username'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
  1. 修改root账号的主机值,可以不修改数据库的访问权限直接支持远程访问。(不推荐,因为root账号的权限太大)
update user set Host='%' where User='root';  -- % 指的是所有地址。
FLUSH PRIVILEGES;  -- 刷新权限

4.3. 在本地机器上连接服务器上的mysql服务

笔者本机是windows10系统,并且已经安装mysql。那么打开控制台正常连接mysql时增加-h参数指定远程服务器主机地址即可。

# 这里需要将*.*.*.*修改为读者自己的远程服务器主机地址
mysql -u test -h *.*.*.* -p

你可能感兴趣的:(运维,linux,服务器,运维,mysql,centos)