Ubuntu24 二进制包安装mysql5.7
下载mysql
mysql官方下载地址:https://downloads.mysql.com/archives/community/
安装可以参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html
我选的是Linux-Generic的压缩包安装方式
下载完上传到服务器,解压到安装目录(我这里为/usr/local/mysql-5.7)
➜ cd /usr/local
➜ tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
➜ mv mysql-5.7.44-linux-glibc2.12-x86_64 mysql-5.7
添加用户和用户组
官网命令
$> groupadd mysql
$> useradd -r -g mysql -s /bin/false mysql
创建mysql-files文件
官网命令
$> cd mysql-5.7
$> mkdir mysql-files
$> chown mysql:mysql mysql-files
$> chmod 750 mysql-files
执行initialize
进入mysql-5.7目录
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7 --datadir=/usr/local/mysql-5.7/data
这里可能会报错:libaio.so.1的问题,参考下面执行initialize 时报错的问题
初始化完成后,会输出密码,需要记录
创建ssl证书,使用ssl连接
./bin/mysql_ssl_rsa_setup --basedir=/usr/local/mysql-5.7 --datadir=/usr/local/mysql-5.7/data
创建配置文件
创建配置文件:/etc/my.cnf
开发参考:
[mysqld]
port=3306
character-set-server=utf8
collation-server=utf8_general_ci
default-storage-engine=INNODB
# Only allow connections from localhost
bind-address = 0.0.0.0
#sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=100
#skip-name-resolve
basedir=/usr/local/mysql-5.7
datadir=/usr/local/mysql-5.7/data
socket=/tmp/mysql.sock
#日志
#日志时间,默认是UTC
log_timestamps=SYSTEM
#错误日志
log_error=/usr/local/var/log/mysql/error.log
#开启二进制日志
log-bin=/usr/local/var/log/mysql/mysql-bin
server-id=1
#开启通用查询日志
#general_log=ON
#general_log_file=/usr/local/var/log/mysql/mysql-query.log
#慢查询日志
slow_query_log=ON
slow_query_log_file=/usr/local/var/log/mysql/mysql-slow.log
long_query_time=1
#记录不使用索引查询的语句
log_queries_not_using_indexes=ON
#修改密码校验等级
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
validate_password_policy=0
validate_password_length=4
#设置导入导出的安全目录
secure_file_priv=""
[mysql]
default-character-set=utf8
auto-rehash
[client]
port=3306
其中log_error文件需要事先创建,同时注意文件权限为mysql
启动mysql
./bin/mysqld_safe --user=mysql &
启动可能会失败,日志在my.cnf的log_error配置的文件里,可以找失败原因
生成systemd配置
参考:https://zhuanlan.zhihu.com/p/692930530
在/usr/lib/systemd/system目录下,创建mysql.service文件,写入
[Unit]
Description=MySQL Server
Documentation=man:mysqld
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql-5.7/bin/mysqld_safe
LimitNOFILE = 5000
启动路径按自己的修改既可,之后可以使用systemctl管理mysql
systemctl start mysql
修改root密码
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
只是自己测试,为了方便设置为123456。简单密码需要提前配置validate_password_policy
添加用户,允许从远程访问
默认root只能从本地访问,新增一个用户,方便本地开发,进行远程访问
create user wxl@'%' identified by '123456';
grant all on *.* to wxl@'%';
赋予任意数据库,任意表的所有权限
遇到问题
执行initialize 时报错:找不到libaio.so.1包
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
原因是mysql找不到libaio.so.1包
先执行
➜ ~ apt install libaio1
之后再次安装,依然报错。参考:https://deb.sipwise.com/debian/pool/main/liba/libaio/
手动安装deb包,文件:libaio1_0.3.113-4_amd64.deb
下载地址:https://deb.sipwise.com/debian/pool/main/liba/libaio/
下载后执行:apt install ./libaio1_0.3.113-4_amd64.deb
问题解决
mysql拒绝使用root用户启动
使用mysqld启动,提示Please read “Security“ section of the manual to find out how to run mysqld as root!
这是mysql的安全策略,不能使用root用户启动。改为mysqld_safe启动
./bin/mysqld_safe --user=mysql &
mysql启动没成功,且没报错
查看/etc/myt.cnf里log_error的配置,里面有失败原因
log_error=/usr/local/var/log/mysql/error.log
mysql启动失败:unknown validate_password_policy
error.log提示:[ERROR] unknown variable 'validate_password_policy=0'
如果设置了validate_password_policy参数,my.cnf配置里需要加上
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
mysql客户端报错:libncurses.so.5,libtinfo.so.5
这是由于系统安装的版本过高。通过建立软连接方式解决
查看自己系统下对应的版本,建立软连接
ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6.4 /usr/lib/x86_64-linux-gnu/libncurses.so.5
ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6.4 /usr/lib/x86_64-linux-gnu/libtinfo.so.5