接上一篇Redis安装完成后,继续安装单机MySQL:
创建文件夹
手动创建一个文件夹mysql
MySQL及相关文件都保存在这个我们指定的位置。
创建文件夹路径:
切换到mysql目录下
我们需要创建:
- tmp(临时文件)
- data(数据)
- logs(日志)
- config(配置)
创建文件夹命令是mkdir
:
mkdir tmp data logs config
这个时候还没MySql具体的文件
下载Linux版本并上传解压
国内镜像蛮多,比如:
http://mirrors.sohu.com/mysql/MySQL-8.0/
上传后,解压:
tar -zxvf 压缩包名称
解压完毕后,把解压出来的文件夹改成mysql
我们创建出的文件结构就是这样的:
创建MySql用户组
以下命令中,需要修改的是在赋予权限的两条命令中,mysql文件夹的路径
依次执行:
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /home/software/mysql
chmod -R 755 /home/software/mysql
编辑配置文件
在新建的config文件夹下,建立两个文件,并编辑内容:
1、my.cnf
红框框内都是需要修改的路径
my.cnf文件内容如下:
[client]
port=3306
socket=/home/software/mysql/tmp/mysql.sock
default-character-set=utf8mb4
[mysqld]
# 端口
port=3306
# 安装目录
basedir=/home/software/mysql/mysql-8.0.25-el7-x86_64
# 数据存放目录
datadir=/home/software/mysql/data
# 错误日志
log-error=/home/software/mysql/logs/error.log
# 为MySQL客户端和服务器之间的本地通讯指定一个套接字文件
socket=/home/software/mysql/tmp/mysql.sock
# 记录mysql运行的process id
pid-file=/home/software/mysql/tmp/mysql.pid
# 排序缓冲大小
sort_buffer_size=8M
# 联合查询缓冲大小
join_buffer_size=8M
# 服务端字符集
character-set-server=utf8mb4
# 创建新表时默认存储引擎
default-storage-engine=INNODB
# 允许最大连接数
max_connections=100
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
# 只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve=1
# 设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
# 记录系统时区
log_timestamps=SYSTEM
# 限制LOAD DATA, SELECT …OUTFILE命令的路径
secure_file_priv='/tmp'
2、mysql_custom.server
创建后不管
在我们真正的mysql
文件夹下
解压出的应该有一个 support-files
在里面找到mysql.server
,拿到其中内容
原来的内容:
我们把这里面的内容复制,粘贴到 config文件夹下,我们创建的mysql_custom.server
之内。
我们需要把基础路径从默认的user/local改成自己制定的文件路径
另外,这里data路径,数据文件夹,是需要指定为我们手动创建的。
像这样:
初始化及启动
切换到bin目录下:
cd /home/software/mysql/mysql/bin
初始化,完成后会在logs/error.log日志文件里生成数据库初始密码
./mysqld --defaults-file=/home/software/mysql/config/my.cnf --initialize --user=mysql --basedir=/home/software/mysql/mysql --datadir=/home/software/mysql/data --lower-case-table-names=1
三个文件夹都需要修改:
添加到系统服务自动启动(如果提示是否覆盖,输入 y 确认)
cp -a /home/software/mysql/config/mysql_custom.server /etc/init.d/mysqld
授权及添加服务
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
检查服务是否生效(如果3、4、5 项为 on 则表示已经生效)
chkconfig --list
添加全局变量
vi /etc/profile
export PATH=$PATH:/home/software/mysql/mysql/bin
# 退出保存,使环境变量生效
source /etc/profile
MySQL启动报错
Starting MySQL.2022-07-10T23:50:17.966266Z mysqld_safe error: log-error set to ‘/var/log/mariadb/mariadb.log’, however file don’t exists. Create writable for user ‘mysql’.
ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
最后发现,etc文件夹下也有一个my.cnf
而这里面的配置正是报错的问题,将内容换成我自己创建的my.cnf内容
然后启动成功!
启动MySQL服务
常用操作
开启MySQL
service mysqld start
关闭MySQL
service mysqld stop
重启MySQL
service mysqld restart
查看MySQL状态
service mysqld status
查看MySQL服务信息
ps -ef | grep mysql
查看MySQL服务信息
ps -ef | grep mysql
初始密码会在数据库初始化后自动写入日志文件
# 查看日志文件
cat /home/software/mysql/logs/error.log
# 登录
mysql -uroot -p
修改mysql密码
修改密码
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
立即生效
flush privileges;
设置远程连接
use mysql;
update user set host='%' where user='root';
flush privileges;
测试远程链接
在主机上用 Navicat for MySQL 远程链接: