文章目录

  • 创建文件夹
  • 下载Linux版本并上传解压
  • 创建MySql用户组
  • 编辑配置文件
  • 初始化及启动
  • MySQL启动报错
  • 启动MySQL服务
  • 修改mysql密码


接上一篇Redis安装完成后,继续安装单机MySQL:

创建文件夹

手动创建一个文件夹mysql

MySQL及相关文件都保存在这个我们指定的位置。

创建文件夹路径:

切换到mysql目录下
我们需要创建:

  • tmp(临时文件)
  • data(数据)
  • logs(日志)
  • config(配置)

创建文件夹命令是mkdir

mkdir tmp data logs config

MySQL建立文件 mysql创建文件夹_MySQL


这个时候还没MySql具体的文件

下载Linux版本并上传解压

国内镜像蛮多,比如:

http://mirrors.sohu.com/mysql/MySQL-8.0/

上传后,解压:

tar -zxvf 压缩包名称

解压完毕后,把解压出来的文件夹改成mysql

我们创建出的文件结构就是这样的:

MySQL建立文件 mysql创建文件夹_MySQL_02

创建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

MySQL建立文件 mysql创建文件夹_MySQL_03


红框框内都是需要修改的路径

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,拿到其中内容

MySQL建立文件 mysql创建文件夹_MySQL_04


原来的内容:

MySQL建立文件 mysql创建文件夹_MySQL建立文件_05


我们把这里面的内容复制,粘贴到 config文件夹下,我们创建的mysql_custom.server之内。我们需要把基础路径从默认的user/local改成自己制定的文件路径

另外,这里data路径,数据文件夹,是需要指定为我们手动创建的。

像这样:

MySQL建立文件 mysql创建文件夹_MySQL_06

初始化及启动

切换到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

三个文件夹都需要修改:

MySQL建立文件 mysql创建文件夹_学习_07

添加到系统服务自动启动(如果提示是否覆盖,输入 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

MySQL建立文件 mysql创建文件夹_mysql_08


添加全局变量

vi /etc/profile
export PATH=$PATH:/home/software/mysql/mysql/bin
# 退出保存,使环境变量生效
source /etc/profile

MySQL建立文件 mysql创建文件夹_MySQL_09

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

MySQL建立文件 mysql创建文件夹_linux_10

而这里面的配置正是报错的问题,将内容换成我自己创建的my.cnf内容

MySQL建立文件 mysql创建文件夹_学习_11


然后启动成功!

MySQL建立文件 mysql创建文件夹_linux_12

启动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建立文件 mysql创建文件夹_学习_13

# 登录

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 远程链接:

MySQL建立文件 mysql创建文件夹_MySQL_14