LOADING

加载过慢请开启缓存 浏览器默认开启

Linux下的MySQL服务搭建

2023/7/6 xieajiu MySQL

1、获取Ubuntu对应版本的MySQL安装包

熟悉的步骤,登录MySQL官网,进行安装包的下载。不过这次不使用RPM或者APT的方式进行MySQL的安装。需要先获取glibc版本

ldd --version

我这边的版本是2.35。我使用的Ubuntu版本是22.04,我选择安装的MySQL版本是8.0.33,使用的安装包是

2、安装并配置MySQL

解压MySQL的安装包tar -zxvf mysql-xxx-xx-xx.tar.gz(会将压缩包解压到当前目录),会得到如下目录结构:

├── LICENSE          -
├── README           -
├── bin              - 执行文件所在目录,mysql,mysqld等等
├── data             - 我自己创建的,用来存储MySQL的数据,在my.cnf中配置
├── docs             - 
├── include          - 
├── lib              - 
├── logs             - 自己创建的,用于存放error日志,在my.cnf中配置
├── man              - 
├── my.cnf           - 需要自己创建,这个是MySQL的配置文件
├── share            - 
└── support-files    - 

接下来用~表示MySQL解压目录的绝对路径,小伙伴要自己替换啊

创建MySQL的配置文件

touch my.cnf

编写配置文件

[mysqld]
# 设置端口,默认3306
port = 13306
# 服务端字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# MySQL的Base目录
basedir = ~
# 数据存储目录
datadir = ~/data
# 日志,默认在/var/log/mysql.log
log-error = ~/error.log
socket = ~/mysql.sock
pid-file = ~/mysqld.pid
default-storage-engine = InnoDB
max_connections = 200
# 设置时区
default-time-zone = '+08:00'

[client]
default-character-set = utf8mb4

接下来开始初始化MySQL

~/bin/mysqld --initialize --defaults-file=~/my.cnf

我这里并没有创建mysql用户和用户组,其实只要不使用root用户就可以了。要是自己玩的话,使用root也没有关系。我这边用的Linux是Ubuntu,所以我是使用的用户是我自己的账户。

关于MySQL初始化还有一个命令,--initialize-insecure这个会生成一个空密码的root用户。

也可以加上 --console在控制台打印。

如果控制台没有打印日志,可以去/var/log/mysql.log或者配置文件中的log-error,可以找到:[Note] A temporary password is generated for root@localhost: XxxXxxXxx其中XxxXxxXxx就是密码。

然后登录启动MySQL,登录并重置root用户密码。

# 启动MySQL服务,这是在后台运行的。
~/bin/mysqld_safe --defaults-file=~/my.cnf

# 登录MySQL
~/bin/mysql -uroot -p密码 -P 端口 -S ~/mysql.sock

若没有配置mysql.sock文件则不需要。然后重置root密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';
FLUSH PRIVILEGES;

关闭临时启动的MySQL服务,防止在接下来的配置中出现端口冲突

~/bin/mysqladmin -uroot -p密码 shutdown

3、配置MySQL服务

我使用的是systemctl来管理服务,其他的没有尝试过

创建mysqld.service文件

touch mysqld.service

编写文件内容

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
# User=mysql
# Group=mysql

Type=forking

PIDFile=/home/xieajiu/DevelopmentTools/Database/MySQL/8033/mysqld.pid

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Execute pre and post scripts as root
PermissionsStartOnly=true

# Start main service
ExecStart=~/mysqld --defaults-file=~/my.cnf  --daemonize

# Use this to switch malloc implementation
# EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 5000

Restart=on-failure

RestartPreventExitStatus=1

PrivateTmp=false
WorkingDirectory=/home/xieajiu/DevelopmentTools/Database/MySQL/8033

其中的~是mysql的解压目录

然后配置MySQL服务

cp ~/mysqld.service /etc/systemd/system/

# 加载配置
systemctl daemon-reload
#启动MySQL服务
systemctl start mysqld
#设置服务开机自启
systemctl enable mysqld

ok,到此结束!