大家好,我是曾续缘。在这篇教程中,我们将学习如何在Linux系统上进行MySQL数据库的初始化配置。MySQL是一个常用的关系型数据库管理系统,通过以下逐步说明的操作,您可以完成数据库的初始化配置。
卸载MariaDB
在CentOS 7+系统中,默认使用MariaDB数据库而不再默认使用MySQL数据库。因此,在安装MySQL之前,需要先卸载自带的MariaDB。以下是具体的卸载步骤:
-
查看 MariaDB 版本:
rpm -qa|grep mariadb
如果有输出结果,则说明系统中安装了 MariaDB,需要进行卸载。
-
如果需要卸载,执行以下指令来卸载 MariaDB(请替换
文件名
为实际的文件名):rpm -e --nodeps 文件名
-
确认是否成功卸载:
rpm -qa|grep mariadb
下载并解压MySQL
-
进入到 /usr/local/
目录
cd /usr/local
-
使用 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
-
解压下载的资源包:
tar -Jxvf 文件名
-
tar
是用于归档和提取文件的工具。 -
-J
选项表示使用xz算法进行压缩和解压缩。.tar.xz
是一种常见的压缩文件格式,结合了.tar
归档和.xz
压缩。 -
-x
选项表示解压缩操作,即从压缩文件中提取出文件。 -
-v
选项表示详细模式,将输出解压缩过程中的每个文件的详细信息。 -
-f
选项后面跟着要解压的文件名。
-
解压完成后,在 /usr/local/
目录下会生成MySQL文件夹。
重命名 MySQL 文件夹
为了方便管理,可以将 MySQL 文件夹重命名为特定的版本号,一般命名为mysql版本号,例如 mysql8
:
mv 原文件夹名 mysql8
添加 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编辑器。
最后,执行以下命令来重新加载刚才修改的环境变量配置:
source /etc/profile
查看 MySQL 版本
mysql --version
创建MySQL相关用户组和用户
-
创建名为
mysql
的用户组:groupadd mysql
-
groupadd
:用于创建一个新的用户组。 -
mysql
:新创建的用户组的名称。 -
创建名为
mysql
的用户,并指定其所属用户组为mysql
:useradd -r -g mysql mysql
-
useradd
:用于创建一个新用户。 -
-r
:创建系统用户,通常用于创建服务账号,用于运行系统服务进程。 -
-g mysql
:指定新用户所属的用户组为mysql
。 -
mysql
:新创建的用户名。 -
创建数据目录并设置权限:
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数据库所需的用户组、用户和数据目录存在,并设置相应的权限。
创建my.cnf配置文件
-
在
/usr/local/etc/
目录下创建my.cnf
配置文件,用于初始化MySQL数据库。 -
使用Vim编辑器进行编辑:
vim /usr/local/etc/my.cnf
-
按
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 将会根据您提供的参数进行初始化配置,包括创建数据目录、生成系统表等操作。
解决可能的错误
如果出现 mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
错误,通常是由于缺少 libaio
库文件引起的。libaio
是一个异步输入输出库,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
首次修改密码
首次登录MySQL时,需要设置root用户的密码:
mysql -u root --skip-password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
配置远程连接
执行以下命令以允许root用户通过任何主机远程访问MySQL:
USE mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;
(放开 3306 端口后)用 Navicat 可视化工具测试连接
可能存在的问题
云服务器有防火墙时,需要在云服务器控制台安全组下配置放开 3306 端口,以允许远程连接到 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