Fork me on GitHub

OpenEuler安装Java + Mysql环境

JDK安装

sudo dnf install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
#查看版本
java -version
javac -version

image

Mysql安装

方案一:Mysql官方源安装(不推荐,装在OpenEuler上可能有问题)

# 添加 MySQL 官方仓库, Mysql官方版本会有各种各样的问题
sudo dnf install -y https://repo.mysql.com/mysql80-community-release-el8-3.noarch.rpm
#查看可用仓库
dnf repolist all | grep mysql
#安装 MySQL
 sudo dnf install -y mysql-community-server

设置

#启动并设置开机自启
sudo systemctl enable --now mysqld
sudo systemctl status mysqld

#获取初始 root 密码
sudo grep 'temporary password' /var/log/mysqld.log

#初始化安全设置
sudo mysql_secure_installation
#1.输入临时密码
#2.修改 root 密码
#3.移除匿名用户
#4.禁止远程 root 登录(可选)
#5.删除测试数据库
#6.刷新权限

#登录 MySQL
mysql -u root -p
#创建用户
CREATE USER 'USERNAME'@'%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

#防火墙放行
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

# 重启
sudo systemctl restart mysqld
# 停止
sudo systemctl stop mysqld
# 状态
sudo systemctl status mysqld

修改密码检查策略

# 查看当前策略
SHOW VARIABLES LIKE 'validate_password%';

# 改成 LOW(只要求长度 >= 8),默认的MEDIUM要求密码有特殊符号
SET GLOBAL validate_password.policy=LOW;
SET GLOBAL validate_password.length=8;

修改端口

#编辑 MySQL 主配置文件
sudo vi /etc/my.cnf
#在 [mysqld] 下加入
[mysqld]
port=3315
bind-address=0.0.0.0

#重启
sudo systemctl restart mysqld
sudo ss -lntp | grep 3315

#放行端口
sudo firewall-cmd --permanent --add-port=3315/tcp
sudo firewall-cmd --reload
#验证
sudo firewall-cmd --list-ports

#测试远程连接
mysql -h 服务器IP -P 3315 -u root -p

#允许 root 远程访问
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
#修改远程root密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;

#为某个业务用户(更推荐)
CREATE USER 'user'@'%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

#如果报错查看日志
sudo cat /var/log/mysqld.log

遇到的问题

3315无法启动,Permission denied

原因:3315 端口要么被占用,要么被 SELinux 拦住。openEuler 默认 SELinux = enforcing,非常严格。当你把 MySQL 端口改成 3315 时,SELinux 会直接挡住。
image

#查看3315是不是被占用
sudo ss -lntp | grep 3315

#关闭SELinux
sudo setenforce 0            # 临时关闭
sudo vi /etc/selinux/config  # 永久关闭
#添加如下内容
SELINUX=disabled

安装时GPG KEY老旧

image

sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

方案二:使用dnf源安装(推荐)

# 彻底删除官方版的Mysql(必须干净卸载)
sudo systemctl stop mysqld
sudo systemctl disable mysqld
#卸载服务
sudo dnf remove -y mysql* mariadb*
#删除所有数据库残留数据目录
sudo rm -rf /var/lib/mysql
sudo rm -rf /var/lib/mysql_files
sudo rm -rf /var/log/mysql*
sudo rm -rf /var/log/mysqld.log
#清理所有 MySQL 配置文件
sudo rm -rf /etc/my.cnf
sudo rm -rf /etc/my.cnf.d
sudo rm -rf /etc/mysql
#删除 Systemd 服务文件
sudo rm -rf /usr/lib/systemd/system/mysqld.service
sudo rm -rf /usr/lib/systemd/system/mysql.service
sudo systemctl daemon-reload

# 安装 openEuler 官方仓库的 MySQL(已经针对 openEuler 完美适配)
sudo dnf install -y mysql-server

#没有密码,直接进入
mysql -u root

#创建用户
CREATE USER 'USERNAME'@'%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

mysql配置文件

#主配置文件
cat /etc/my.cnf
#内容如下
# This group is read both both by the client and the server
# use it for options that affect everything
[client-server]

# This group is read by the server
[mysqld]

# include all files from the config directory
!includedir /etc/my.cnf.d

修改主配置文件内容

#备份配置文件
sudo cp /etc/my.cnf /etc/my.cnf.backup.$(date +%F_%H%M%S)
#一键写入
sudo tee /etc/my.cnf > /dev/null <<'EOF'
# This group is read both both by the client and the server
# use it for options that affect everything
[client-server]

# This group is read by the server
[mysqld]
port = 3315
bind-address = 0.0.0.0
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

# include all files from the config directory
!includedir /etc/my.cnf.d
EOF

#重启生效
sudo systemctl restart mysqld
sudo systemctl status mysqld

image
子配置文件(为了配置模块化)
image

导入数据库

mysql

use DBNAME;

source /home/autumn/DBNAME-structure-20251119_1535.sql

image

数据库表名的坑

[mysqld]
#忽略表名大小写
lower_case_table_names=1

#重启
systemctl restart mysqld

MySQL 不允许在已有数据的情况下直接修改这个参数,所以如果配置文件添加了lower_case_table_names这个参数则会无法启动,且报错不说明原因.
image

posted @ 2025-11-17 13:53  秋夜雨巷  阅读(12)  评论(0)    收藏  举报