7. Lock 同步锁


1-下载 MySQL

1.1-官方下载

CentOSRed Hat版本差别不大,可以选择Red Hat版本或者Linux-Generic通用版本。

1.2-百度云下载


2-安装 MySQL

2.1-查看系统版本

cat /etc/redhat-release

在这里插入图片描述

2.2-创建用户和用户组

# 自动创建用户 用户组
useradd mysql

# 设置用户密码
passwd mysql

在这里插入图片描述

2.3-解压免编译包

# 解压到 /data/opt/ 目录下
tar -xvf /data/targz/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz -C /data/opt/

在这里插入图片描述

ll /data/opt/mysql-8.0.19-linux-glibc2.12-x86_64/

在这里插入图片描述

2.4-解压文件夹重命名

mv /data/opt/mysql-8.0.19-linux-glibc2.12-x86_64/ /data/opt/mysql-8.0.19_3306

在这里插入图片描述
备注:

# 目录 A 重命名 B
mv A B
# 目录 A 移动到目录 B 下并重命名为 C
mv /A /B/C

2.5-解压文件夹软连接

ln -s /data/opt/mysql-8.0.19_3306/ /usr/local/mysql-8.0.19_3306

在这里插入图片描述

2.6-配置文件 my.cnf

my.cnf配置文件生效优先级(由高到低):

  • MySQL启动时指定的具体参数。
  • MySQL启动时指定位置的配置文件。
  • MySQL数据目录下的my.cnf文件。
  • MySQL读取/etc/my.cnf文件。
  • MySQL默认的参数。
# 安装 vim 软件
yum install vim -y

my.cnf

# 客户端设置(客户端的连接参数)
[client]
# 连接 MySQL 使用的端口
port = 3306
# 连接 MySQL 使用的套接字文件
socket = /data/data/mysql/8.0.19_3306/mysql.sock
# 设置字符集
default-character-set = utf8mb4

# 服务端设置
[mysqld]
# 服务id(可高可用时区分)
server_id = 01
# 监听端口
port = 3306
# 启动用户
user = mysql
# 数据库默认编码(5.1以下 default-character-set)
character_set_server = utf8mb4
# 数据库默认比对规则、排序规则
collation_server = utf8mb4_bin
# 该目录为根目录(安装目录)
basedir = /data/opt/mysql-8.0.19_3306
# 数据库初始化数据存放目录(创建文件夹且文件夹中无文件)
datadir = /data/data/mysql/8.0.19_3306/data
# 数据库存放临时文件的目录(创建文件夹)
tmpdir = /data/data/mysql/8.0.19_3306/tmp
# 指定客户端程序与数据库间通讯的套接字文件
socket = /data/data/mysql/8.0.19_3306/mysql.sock
explicit_defaults_for_timestamp = true

[mysqld_safe]
# 数据库错误日志(创建文件夹)
log-error = /data/data/mysql/8.0.19_3306/log/mysqld.log
# 数据库启动后进程文件位置
pid-file = /data/data/mysql/8.0.19_3306/3306.pid

2.7-安装文件权限

# 设置安装文件所属 用户和用户组
chown -R mysql:mysql /data/opt/mysql-8.0.19_3306/

# 设置安装文件调用权限
chmod -R 755 /data/opt/mysql-8.0.19_3306/

# 查看设置结果
ll /data/opt/mysql-8.0.19_3306/

在这里插入图片描述
备注:

# 通配符匹配
chown -R mysql:mysql /usr/local/mysql*
chmod -R 755 /usr/local/mysql*

2.8-创建运行数据文件夹

mkdir -p /data/data/mysql/8.0.19_3306/data
mkdir -p /data/data/mysql/8.0.19_3306/log
mkdir -p /data/data/mysql/8.0.19_3306/tmp

在这里插入图片描述

2.9-设置运行数据文件夹权限

chown -R mysql:mysql /data/data/mysql/8.0.19_3306/
chmod -R 755 /data/data/mysql/8.0.19_3306/

在这里插入图片描述

2.10-初始化 MySQL

MySQL 5.7.2及以上版本与以前版本不同,很多资料上使用命令../scripts/mysql_install_db。而在MySQL 5.7.2mysql_install_db的指令在bin目录下,官网说使用mysqld --initialize进行初始化。

2.10.1-切换至 mysql 用户

su mysql

2.10.2-使用 /etc/my.cnf 配置文件(默认)

/data/opt/mysql-8.0.19_3306/bin/mysqld --initialize

在这里插入图片描述

2.10.3-指定配置文件初始化(可启动多个数据库)

/data/opt/mysql-8.0.19_3306/bin/mysqld --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf --initialize

2.10.4-记录临时密码(后面登录使用)

A temporary password is generated for root@localhost: Hfp9,(i(Xsmu

2.10.5-查看初始化成功产生文件

在这里插入图片描述

2.11-启动 MySQL

MySQL mysqld mysqld_safe mysql.server mysqld_multi 四种启动方式区别

2.11.1-使用 /etc/my.cnf 配置文件(默认)

/data/opt/mysql-8.0.19_3306/bin/mysqld

2.11.2-初始化的配置文件需要指定

若初始化指定配置文件,启动时仍需指定。

/data/opt/mysql-8.0.19_3306/bin/mysqld --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf

在这里插入图片描述

2.11.3-查看 MySQL 进程

ps -ef|grep mysql-8.0.19

在这里插入图片描述


3-连接 MySQL

3.1-登录 MySQL

通过上面临时密码登录:A temporary password is generated for root@localhost: Hfp9,(i(Xsmu

3.1.1-使用 /etc/my.cnf 配置文件(默认)

/data/opt/mysql-8.0.19_3306/bin/mysql -u root -p

3.1.2-初始化的配置文件需要指定

若初始化指定配置文件,登录时仍需指定。

/data/opt/mysql-8.0.19_3306/bin/mysql --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf -u root -p

在这里插入图片描述

3.2-修改 MySQL 密码

# 格式:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';  
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

在这里插入图片描述


4-常见问题

4.1-初始化 MySQL 失败

--initialize specified but the data directory has files in it. Aborting

# 数据库初始化数据存放目录(创建文件夹且文件夹中无文件)
datadir = /data/data/mysql/8.0.19_3306/data

删除/data/data/mysql/8.0.19_3306/data文件夹下所有文件

4.2-无法远程登录 MySQL

客户端无法连接到MySQL服务器(网络不通)
在这里插入图片描述

4.2.1-是否启动成功

  • 查看MySQL进程:
    ps -ef|grep mysql-8.0.19
    
    在这里插入图片描述
  • 命令登录MySQL
    /data/opt/mysql-8.0.19_3306/bin/mysql --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf -u root -p
    
    在这里插入图片描述

4.2.2-是否占用系统 3306 端口

# yum install net-tools -y
netstat -lnp|grep 3306

在这里插入图片描述

4.2.3-是否可以 ping 通服务器

在这里插入图片描述

4.2.4-关闭防火墙

CentOS 7默认使用 firewall作为防火墙

# 防火墙状态
firewall-cmd --state

# 停止 firewall
systemctl stop firewalld.service

# 禁止 firewall 开机启动
systemctl disable firewalld.service 

在这里插入图片描述
备注:

# 查看已开放端口
firewall-cmd --list-ports

# 开启端口:--zone #作用域  --add-port=80/tcp #添加端口(端口/通讯协议) --permanent #永久生效(无此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent

# 关闭 selinux:将 etc/selinux/config 文件中 SELINUX=enforcing 改为 SELINUX=disabled
vi /etc/selinux/config

4.2.5-再次远程登录 MySQL

客户端请求MySQL服务器被拒绝(网络通,被拒绝)
在这里插入图片描述

4.2.6-授权用户远程访问

MySQL 命令行 创建数据库 添加用户 用户授权

# MySQL 命令行模式(初始化的配置文件需要指定)
/data/opt/mysql-8.0.19_3306/bin/mysql --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf -u root -p

# mysql db 中存储了用户信息(user 表)
use mysql

# 表格中 root 用户的 host 应该显示 localhost(只支持服务器访问,不支持远程)
select host, user, authentication_string, plugin from user;

在这里插入图片描述

# 创建远程登录用户 密码
CREATE USER 'root'@'%' IDENTIFIED BY 'password';

# 用户登录的加密规则修改为 mysql_native_password*
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

# 授予用户(root)远程访问权限  GRANT ALL(所有权限) %(通配所有 host,可访问远程)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

# MySQL 权限放在 cache(grant表)中,所以必须重新重新加载
flush privileges;

# 表格中 root 用户的 host 已经变成 %(修改成功,可远程访问)
select host, user, authentication_string, plugin from user;

在这里插入图片描述

4.2.7-远程登录 MySQL 成功

在这里插入图片描述

4.3-用户授权报错 1064 (42000)

MySQL 8.0 用户授权报错 1064 (42000)

4.4-Navicat 连接 MySQL 报 2059 错误

MySQL 8.0版本与MySQL5.0版本加密规则不一致,而现有的可视化工具只支持旧的加密方式。两种解决方法:

  • 升级Navicat驱动。
  • MySQL用户登录的加密规则修改为mysql_native_password**

第二种解决方法:

# 修改加密规则(password 当前密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

# 修改 root 用户密码(password 设置新密码)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

# 刷新权限
flush privileges;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值