超详细教程:Linux系统下安装MySQL,一文读懂!

大家好,我是曾续缘。在这篇教程中,我们将学习如何在Linux系统上进行MySQL数据库的初始化配置。MySQL是一个常用的关系型数据库管理系统,通过以下逐步说明的操作,您可以完成数据库的初始化配置。

卸载MariaDB

在CentOS 7+系统中,默认使用MariaDB数据库而不再默认使用MySQL数据库。因此,在安装MySQL之前,需要先卸载自带的MariaDB。以下是具体的卸载步骤:

  1. 查看 MariaDB 版本:

    rpm -qa|grep mariadb

    如果有输出结果,则说明系统中安装了 MariaDB,需要进行卸载。

  2. 如果需要卸载,执行以下指令来卸载 MariaDB(请替换 文件名 为实际的文件名):

    rpm -e --nodeps 文件名
  3. 确认是否成功卸载:

    rpm -qa|grep mariadb

超详细教程:Linux系统下安装MySQL,一文读懂!

下载并解压MySQL

  1. 进入到/usr/local/目录
cd /usr/local
  1. 使用wget命令下载MySQL资源包到/usr/local/目录:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

超详细教程:Linux系统下安装MySQL,一文读懂!

  1. 解压下载的资源包:
tar -Jxvf 文件名
  • tar 是用于归档和提取文件的工具。
  • -J 选项表示使用xz算法进行压缩和解压缩。.tar.xz是一种常见的压缩文件格式,结合了.tar归档和.xz压缩。
  • -x 选项表示解压缩操作,即从压缩文件中提取出文件。
  • -v 选项表示详细模式,将输出解压缩过程中的每个文件的详细信息。
  • -f 选项后面跟着要解压的文件名。

超详细教程:Linux系统下安装MySQL,一文读懂!

  1. 解压完成后,在/usr/local/目录下会生成MySQL文件夹。

重命名 MySQL 文件夹

为了方便管理,可以将 MySQL 文件夹重命名为特定的版本号,一般命名为mysql版本号,例如 mysql8

mv 原文件夹名 mysql8

超详细教程:Linux系统下安装MySQL,一文读懂!

添加 MySQL 到 PATH 变量

添加 MySQL 到 PATH 变量后,可以在全局使用 MySQL,就不再需要手动输入完整路径来执行MySQL命令了。

我们将编辑/etc/profile文件,并在其中添加必要的环境变量信息。

vim /etc/profile

这条命令将打开/etc/profile文件以进行编辑,按下i键进入编辑模式。

在文件末尾添加以下内容:

export PATH=$PATH:/usr/local/mysql8/bin
  • export PATH=$PATH:/usr/local/mysql8/bin:将mysql8的bin目录添加到系统的PATH环境变量中,以便在任何位置都可以直接运行mysql命令。

按下Esc键退出编辑模式,并输入:wq保存并退出vim编辑器。

超详细教程:Linux系统下安装MySQL,一文读懂!

最后,执行以下命令来重新加载刚才修改的环境变量配置:

source /etc/profile

查看 MySQL 版本

mysql --version

超详细教程:Linux系统下安装MySQL,一文读懂!

创建MySQL相关用户组和用户

  1. 创建名为mysql的用户组:

    groupadd mysql
    • groupadd:用于创建一个新的用户组。
    • mysql:新创建的用户组的名称。
  2. 创建名为mysql的用户,并指定其所属用户组为mysql

    useradd -r -g mysql mysql
    • useradd:用于创建一个新用户。
    • -r:创建系统用户,通常用于创建服务账号,用于运行系统服务进程。
    • -g mysql:指定新用户所属的用户组为 mysql
    • mysql:新创建的用户名。
  3. 创建数据目录并设置权限:

    mkdir -p /data/mysql8_data
    chown -R mysql:mysql /data/mysql8_data
    chmod -R 750 /data/mysql8_data
    • mkdir -p /data/mysql8_data:创建一个名为 mysql8_data 的目录,并自动创建任何需要的父目录。
    • chown -R mysql:mysql /data/mysql8_data:更改 /data/mysql8_data 目录及其所有子目录和文件的所有者为 mysql 用户和组。
    • chmod -R 750 /data/mysql8_data:更改 /data/mysql8_data 目录及其所有子目录和文件的权限。

以上操作是为了确保MySQL数据库所需的用户组、用户和数据目录存在,并设置相应的权限。

超详细教程:Linux系统下安装MySQL,一文读懂!

创建my.cnf配置文件

  1. /usr/local/etc/目录下创建my.cnf配置文件,用于初始化MySQL数据库。

  2. 使用Vim编辑器进行编辑:

    vim /usr/local/etc/my.cnf
  3. i 进入输入模式,粘贴以下配置,然后按 ESC 退出编辑模式,并输入 :wq 保存并退出。

配置内容:

[mysql]                           # MySQL客户端配置
default-character-set=utf8mb4     # 默认字符集设为utf8mb4

[client]                          # 客户端配置
port       = 3306                 # 客户端连接的端口号
socket     = /tmp/mysql.sock      # 客户端连接使用的套接字文件路径

[mysqld]                          # MySQL服务端配置
port       = 3306                 # 服务端监听的端口号
server-id  = 3306                 # 服务端ID编号
user       = mysql                # 运行MySQL服务的用户
socket     = /tmp/mysql.sock      # 服务端使用的套接字文件路径
basedir    = /usr/local/mysql8    # MySQL安装目录
datadir    = /data/mysql8_data/mysql    # 数据存放目录
log-bin    = /data/mysql8_data/mysql/mysql-bin    # 二进制日志(binlog)存放目录
innodb_data_home_dir      =/data/mysql8_data/mysql    # InnoDB数据文件存放目录
innodb_log_group_home_dir =/data/mysql8_data/mysql    # InnoDB日志文件存放目录
log-error =/data/mysql8_data/mysql/mysql.log    # 错误日志文件路径
pid-file  =/data/mysql8_data/mysql/mysql.pid    # 服务进程ID文件路径
character-set-server=utf8mb4    # 服务端字符集设为utf8mb4
lower_case_table_names=1        # 表名大小写不敏感
autocommit =1                   # 自动提交开启

skip-external-locking          # 跳过外部锁定机制
key_buffer_size = 256M         # MyISAM存储引擎索引缓存大小
max_allowed_packet = 1M        # 最大允许的数据包大小
table_open_cache = 1024        # 表缓存大小
sort_buffer_size = 4M          # 排序缓冲区大小
net_buffer_length = 8K         # 网络缓冲区长度
read_buffer_size = 4M          # 读缓冲区大小
read_rnd_buffer_size = 512K    # 随机读缓冲区大小
myisam_sort_buffer_size = 64M  # MyISAM排序缓冲区大小
thread_cache_size = 128        # 线程缓存大小
tmp_table_size = 128M          # 临时表大小
explicit_defaults_for_timestamp = true    # 显式设置默认时间戳
max_connections = 500          # 最大连接数
max_connect_errors = 100       # 最大连接错误数
open_files_limit = 65535       # 打开文件限制数

binlog_format=mixed            # 二进制日志格式为混合模式
binlog_expire_logs_seconds =864000     # 日志过期时间
default_storage_engine = InnoDB         # 创建表时使用的默认存储引擎为InnoDB
innodb_data_file_path = ibdata1:10M:autoextend    # InnoDB数据文件路径和自动扩展大小
innodb_buffer_pool_size = 1024M         # InnoDB缓冲池大小
innodb_log_file_size = 256M             # InnoDB日志文件大小
innodb_log_buffer_size = 8M             # InnoDB日志缓冲区大小
innodb_flush_log_at_trx_commit = 1      # 每次事务提交时刷新日志
innodb_lock_wait_timeout = 50           # InnoDB锁等待超时时间
transaction-isolation=READ-COMMITTED    # 事务隔离级别设置为读已提交

[mysqldump]                # mysqldump工具配置
quick                      # 使用快速模式导出数据
max_allowed_packet = 16M   # 导出数据包的最大允许大小

[myisamchk]                # MyISAM存储引擎检查工具配置
key_buffer_size = 256M     # 缓冲区大小
sort_buffer_size = 4M      # 排序缓冲区大小
read_buffer = 2M           # 读缓冲区大小
write_buffer = 2M          # 写缓冲区大小

[mysqlhotcopy]             # mysqlhotcopy工具配置
interactive-timeout        # 交互超时时间

初始化 MySQL 数据库

执行以下命令以进行MySQL数据库的初始化配置:

mysqld --defaults-file=/usr/local/etc/my.cnf --basedir=/usr/local/mysql8 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure

「参数说明:」

  • --defaults-file=:指定MySQL的配置文件路径。
  • --basedir=:指定MySQL的安装目录。
  • --datadir=:指定MySQL初始化数据存储的目录。
  • --user=:指定运行MySQL的用户。
  • --initialize-insecure:以无密码模式初始化MySQL数据库。

执行以上命令后,MySQL 将会根据您提供的参数进行初始化配置,包括创建数据目录、生成系统表等操作。

超详细教程:Linux系统下安装MySQL,一文读懂!

解决可能的错误

如果出现 mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 错误,通常是由于缺少 libaio 库文件引起的。libaio 是一个异步输入输出库,MySQL 在一些操作中需要使用到该库。

超详细教程:Linux系统下安装MySQL,一文读懂!

您可以尝试使用以下命令安装 libaio 库文件:

  • 对于Ubuntu/Debian系统:
sudo apt-get install libaio1
  • 对于CentOS/RHEL系统:
sudo yum install libaio

安装完成后,再次执行初始化命令,看是否还会出现相同的错误。

后台启动MySQL服务

执行以下命令以在后台安全模式启动MySQL服务器:

mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
  • mysqld_safe: 这是一个 MySQL 提供的辅助程序,用于启动和监控 MySQL 服务器进程。它会在启动过程中提供一些额外的安全性和错误处理功能。
  • --defaults-file=/usr/local/etc/my.cnf: 这部分指定了要使用的配置文件的路径和名称。在这个例子中,MySQL 将会使用 /usr/local/etc/my.cnf 文件中的配置参数来启动数据库。
  • &: 在命令的末尾加上 & 符号表示让命令在后台以守护进程的方式运行,这样可以让终端立刻返回到命令行界面,而不必等待 MySQL 服务器启动完成。

确认MySQL服务启动

执行以下命令以确认MySQL服务已启动:

ps -ef|grep mysql

超详细教程:Linux系统下安装MySQL,一文读懂!

首次修改密码

首次登录MySQL时,需要设置root用户的密码:

mysql -u root --skip-password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;

超详细教程:Linux系统下安装MySQL,一文读懂!

配置远程连接

执行以下命令以允许root用户通过任何主机远程访问MySQL:

USE mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;

超详细教程:Linux系统下安装MySQL,一文读懂!

(放开 3306 端口后)用 Navicat 可视化工具测试连接

超详细教程:Linux系统下安装MySQL,一文读懂!

可能存在的问题

云服务器有防火墙时,需要在云服务器控制台安全组下配置放开 3306 端口,以允许远程连接到 MySQL 数据库。

  • 超详细教程:Linux系统下安装MySQL,一文读懂!

  • 虚拟机有防火墙时,需要开放 MySQL 使用的端口(默认为 3306)

firewall-cmd --query-port=3306/tcp 查看端口状态, no表示未开启
firewall-cmd --add-port=3306/tcp --permanent # 永久开放端口
systemctl restart firewalld # 重启防火墙

以上就是在Linux系统中进行MySQL数据库初始化配置的详细步骤。通过按照这些步骤操作,您可以成功完成MySQL数据库的初始化配置。希望这篇教程对您有所帮助!


原文始发于微信公众号(曾续缘):超详细教程:Linux系统下安装MySQL,一文读懂!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/256848.html

(0)
东东的头像东东

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!