文章目录
- 准备工作
- 安装
- 踩坑错误
- 1. 启动时:./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
- 2. Starting MySQL.2024-08-30T07:03:36.726199Z mysqld_safe error: log-error set to '/data/mysql/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
- 3. however file don't exists. Create writable for user 'mysql'.
- 4. ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
- 5. 1130 - Host '118.xxx.xxx.xxxx' is not allowed to connect to this MySQL serve
准备工作
下载MYSQL安装包
查看linux内核版本:
uname -a
如图是64位,那么就选择mysql的linux 64位版本
- 选择本地电脑下载,然后上传到服务器,如下图点击下载即可(上传就自己处理)。
- 个人喜欢直接服务器使用下载命令(这里我选择的是5.7的版本)
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
安装
MYSQL安装
这里我将压缩包放到
/data
目录下的
- 进入data目录
cd /data
- 解压
tar -zxvf tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
- 先检查是否有mysql用户组和mysql用户,没有就添加有就忽略
groups mysql
- 添加用户组和用户
groupadd mysql && useradd -r -g mysql mysql
- 创建数据目录并赋予权限(这里是存放mysql的一些文件)
mkdir -p /data/mysql
chown mysql:mysql -R /data/mysql
- 修改配置文件 vim /etc/my.cnf (没有就新建),注意点 绑定的端口,相关配置文件目录,相关日志文件目录可根据自己配置
[mysqld]
bind-address=0.0.0.0 ; 允许 MySQL 监听所有网络接口的 IPv4 地址
port=3306 ; MySQL 服务监听的端口号,默认是 3306
#user=mysqluser ; 注释掉的配置,原意是设置运行 MySQL 服务的系统用户,但在 systemd 环境下应通过单元文件配置
basedir=/usr/local/mysql ; MySQL 程序的安装基础目录
datadir=/data/mysql ; MySQL 数据文件存储的目录
socket=/tmp/mysql.sock ; MySQL 服务的 Unix 套接字文件,用于本地进程间通信
log-error=/data/mysql/mysql.err ; MySQL 错误日志文件的路径
pid-file=/data/mysql/mysql.pid ; MySQL 服务的进程 ID 文件,记录了服务的 PID
; 下面两行已被注释掉,原意是设置字符集和符号链接的配置
#character_set_server=utf8mb4 ; 设置服务器默认使用的字符集,已注释
#symbolic-links=0 ; 禁止 MySQL 支持 symbolic links,出于安全考虑,已注释
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0 ; 明确禁止 symbolic links 以防止各种安全风险
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
; 上述注释说明当使用 systemd 时,用户和组设置将被忽略,如果需要以不同的用户或组运行 mysqld,应根据 Fedora 维基上的 systemd 指南自定义你的 systemd 单元文件
[mysqld_safe]
log-error=/data/mysql/log/mariadb/mariadb.log ; mysqld_safe 进程的错误日志文件路径
pid-file=/data/mysql/run/mariadb/mariadb.pid ; mysqld_safe 进程的 PID 文件路径
- 创建日志文件目录(不创建后面会报错)
mkdir /data/mysql/run/mariadb
- 初始化mysql
cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --initialize
- 查看初始化密码,初始化密码目录/data/mysql/mysql.err,注意在localhost后面,复制出来
cat /data/mysql/mysql.err
![[Pasted image 20240830163202.png]]
8. 复制启动脚本,启动mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
service mysql start
配置用户
- 开启免密码登陆(这一步可省略,直接使用上面默认密码) 修改my.cnf文件 默认在/etc/my.cnf, 在【mysqld】模块下面添加:skip-grant-tables 保存退出,如果修改需重启mysql,
service mysql restart
。
vim /etc/my.cnf
- 登陆root用户,输入默认密码
/usr/local/mysql/bin/mysql -u root -p
- 允许外部访问(很重要,基本mysql都是需要外部访问的)
use mysql #选择访问mysql库
update user set host = '%' where user = 'root'; #使root能再任何host访问
FLUSH PRIVILEGES; #刷新
- 修改密码
ALTER USER "root"@"%" IDENTIFIED BY "1234";
FLUSH PRIVILEGES; #刷新
用户配置相关命令
- 创建mysql新用户
CREATE USER 'test'@'%' IDENTIFIED BY '123'; #%代表所有ip可访问
‘%’ - 所有情况都能访问
‘localhost’ - 本机才能访问
’111.222.33.44‘ - 指定 ip 才能访问
2.给用户授予权限
grant all on 数据库名.数据库表 to 用户名@'%' identified by "密码";
踩坑错误
1. 启动时:./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
明显问题:没有创建目录,参考安装时创建文件夹mkdir /data/mysql/run/mariadb
2. Starting MySQL.2024-08-30T07:03:36.726199Z mysqld_safe error: log-error set to ‘/data/mysql/log/mariadb/mariadb.log’, however file don’t exists. Create writable for user ‘mysql’.
启动报错:这个错误信息表明 MySQL 服务在尝试启动时遇到了问题,具体是 MySQL 的错误日志文件不存在,并且 MySQL 服务运行的用户(在这个例子中是 mysql
用户)没有权限在指定的目录中创建文件。 参考上面的创建用户和用户组的操作
3. however file don’t exists. Create writable for user ‘mysql’.
错误信息 “however file don’t exists. Create writable for user ‘mysql’.” 指出 MySQL 服务期望的日志文件不存在,并且需要以 mysql
用户身份创建该文件,并且该文件应该是可写的。
还是权限引起的,按照用户和权限给到/data/mysql/log/mariadb/mariadb.log即可
4. ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
这个问题是在第一次进入mysq,执行use mysql
我遇到的报错,还是没有设置自己密码的问题,mysql中执行下面命令设置密码
ALTER USER USER() IDENTIFIED BY '你的密码'
5. 1130 - Host ‘118.xxx.xxx.xxxx’ is not allowed to connect to this MySQL serve
- 确定端口开放
- 确认mysql能访问
- 确定账号有权限(我就是遇到这个,新建账户能链接,最后发现root没改到访问)
吐槽:很久没去搞这些,终究还是会遇到问题。