注:如果您已经安装了 MySQL,可以直接跳到配置部分。
1. 准备安装
解压 mysql 安装包:
tar -zxvf mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz
首先,检查是否存在 mysql
用户和用户组:
groups mysql
如果显示 "groups: mysql: no such user",那么需要添加:
groupadd mysql && useradd -r -g mysql mysql
解释:
该命令在系统中创建一个新的用户组mysql
,接着为这个用户组创建一个新的系统用户mysql
。
mkdir -p /data/mysql
chown mysql:mysql -R /data/mysql
解释:
这两条命令首先在系统上创建/data/mysql
目录,接着将该目录的所有权和组所有权更改为mysql
用户和mysql
用户组。
编辑或创建 MySQL 的配置文件 /etc/my.cnf
:
vim /etc/my.cnf
确保 [mysqld]
部分如下所示:
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
解释:
在my.cnf
配置文件中,此段配置为MySQL服务器定义了以下参数:
bind-address=0.0.0.0
: 允许来自任何IP的连接。
port=3306
: MySQL服务监听的端口。
user=mysql
: MySQL服务以mysql
用户身份运行。
basedir=/usr/local/mysql
: MySQL的安装目录。
datadir=/data/mysql
: 数据库文件的存储目录。
socket=/tmp/mysql.sock
: MySQL的socket文件路径。
log-error=/data/mysql/mysql.err
: 错误日志文件的路径。
pid-file=/data/mysql/mysql.pid
: 进程ID文件的路径。
character_set_server=utf8mb4
: 服务器的默认字符集为utf8mb4
。
symbolic-links=0
: 禁用符号链接,增加安全性。
explicit_defaults_for_timestamp=true
: 设置时间戳字段的默认行为。
将解压后的 MySQL 目录移动到 /usr/local/mysql
,并确保文件夹名称不包含版本号信息:
cd /opt
mv mysql-5.7.41-linux-glibc2.12-x86_64 /usr/local/
cd /usr/local/
mv mysql-5.7.41-linux-glibc2.12-x86_64 mysql
首先,切换到 MySQL 的 bin 目录:
cd mysql/bin/
然后执行初始化命令:
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
解释:
这个命令初始化MySQL服务器:
/etc/my.cnf
作为默认配置文件。
/usr/local/mysql/
。
/data/mysql/
。
mysql
用户身份运行。
初始化后,MySQL 通常会生成一个默认的 root 密码:
cat /data/mysql/mysql.err
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
解释:
该命令将MySQL的启动脚本从其默认位置复制到/etc/init.d/
,从而使MySQL可以作为系统服务进行管理。
service mysql start
完成上述步骤后,您应该已经成功安装和配置了 MySQL。为确保安全,建议您登录后立即更改默认密码。
Q: MySQL服务无法启动,怎么办? A: 首先,查看MySQL的错误日志文件,以找出可能的原因。这可能是由于配置错误、端口冲突或文件权限问题造成的。
Q: 登录 MySQL 时mysql
命令无法识别
A: 将 MySQL 的 bin
目录添加到你的 PATH,这样你就可以从任何位置直接运行 mysql
命令。
在/etc/profile
文件的结尾添加:
export PATH=$PATH:/usr/local/mysql/bin
然后激活环境变量:
source /etc/profile
Q: MySQL启动service mysql start
报错
[root@localhost bin]# service mysql start
Starting MySQL.2023-08-10T12:37:32.240439Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).
A: 按照以下操作步骤处理: 确保日志文件存在并且mysql用户有权访问:
mkdir /var/log/mariadb/
touch /var/log/mariadb/mariadb.log
chown mysql:mysql /var/log/mariadb/mariadb.log
如果你已为MySQL或MariaDB指定了一个自定义的数据目录(如/data/mysql),请确保它存在,并且mysql用户有权访问:
chown -R mysql:mysql /data/mysql
尝试重新启动MySQL服务:
service mysql start
Q: 如何修改MySQL密码? A: 以 CentOS 7 为例,如果你想修改 MySQL 或 MariaDB 的密码,可以按照以下步骤操作:
登录 MySQL:
mysql -u root -p
输入当前的 root 用户密码。
选择 MySQL 的用户数据库:
USE mysql;
UPDATE user SET password=PASSWORD('新密码') WHERE User='root';
对于 MySQL 5.7.6 及之后的版本:UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root';
如果你使用的是 MariaDB,密码字段可能是不同的,你可以使用以下命令:UPDATE user SET password=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
systemctl restart mysqld