前段时间搞了一个mysql服务端的部署,在Ubuntu系统上,中间也踩了许多坑,特此记录下。
下载
官网:MySQL :: MySQL Community Downloads
这个里面有不同系统的安装包,根据自己的系统选择,我选了
- MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/
部署
- 官网下载tar.xz包;
- 解压到/opt目录,重命名为mysql-8.1;
- 进入mysql-8.1目录,创建data目录;
- 将mysql-8.1目录的用户和组改为mysql,权限都设为777:
groupadd mysql;
useradd -r -g mysql mysql;
chown -R mysql:mysql mysql-8.1;- 创建my.cnf文件,放置在哪都可以,一般是/etc/my.cnf,内容如下:
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/opt/mysql/mysql-8.1
datadir=/opt/mysql/mysql-8.1/data
socket=/tmp/mysql.sock
log-error=/opt/mysql/mysql-8.1/data/mysql.err
pid-file=/opt/mysql/mysql-8.1/data/mysql.pid
max_connections=10000
max_user_connections=2000
wait_timeout=200
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
lower_case_table_names=0
# 注意:/etc/my.cnf 中的lower_case_table_names代表是否区分大小写,写1会在启动mysql服务时报错,所以改成了0;- 进入/opt/mysql/mysql-8.1/bin目录,执行数据库初始化命令:
sudo ./mysqld --defaults-file=/etc/my.cnf --basedir=/opt/mysql/mysql-8.1 --datadir=/opt/mysql/mysql-8.1/data --user=mysql --initialize
这个命令第一次执行需要2min,它会在data目录中生成很多文件。
--user指定以哪个用户启动;
初始化密码在/opt/mysql/mysql-8.1/data/mysql.err查看;- 启动mysql服务
将/opt/mysql/mysql-8.1/support-files/mysql.server的basedir和datadir字段赋值:
basedir=/opt/mysql/mysql-8.1
datadir=/opt/mysql/mysql-8.1/data
尝试启动 sudo ./mysql.server start
# 启动可能报错,具体报错信息在/opt/mysql/mysql-8.1/data/mysql.pid查看;
报 my_print_defaults:未找到命令错误:
sudo ln -s /opt/mysql/mysql-8.1/bin/my_print_defaults /usr/bin;
启动成功后,就可先停掉,通过步骤8正式设置启动命令。- 将启动进程添加到系统进程中
cp mysql.server /etc/init.d/mysqld
ln -s /etc/init.d/mysqld /etc/init.d/mysql
systemctl enable mysql --设置开机自启动- mysql服务启动成功后,进入/opt/mysql/mysql-8.1/bin目录,执行./mysql -uroot -p,输入初始密码进入数据库,然后通过alter user 'root'@'localhost' identified by 'new_passwd'; 语句设置新密码。
以上就完成mysql服务端的部署,如果需要远程客户端访问该服务器,还需要进行一些配置,可参考如何开启MySQL远程访问权限允许远程连接? - 流云1 - 博客园 。