7. Lock 同步锁
下载 安装 MySQL 8.0
- 1-下载 MySQL
- 1.1-官方下载
- 1.2-百度云下载
- 2-安装 MySQL
- 2.1-查看系统版本
- 2.2-创建用户和用户组
- 2.3-解压免编译包
- 2.4-解压文件夹重命名
- 2.5-解压文件夹软连接
- 2.6-配置文件 my.cnf
- 2.7-安装文件权限
- 2.8-创建运行数据文件夹
- 2.9-设置运行数据文件夹权限
- 2.10-初始化 MySQL
- 2.10.1-切换至 mysql 用户
- 2.10.2-使用 /etc/my.cnf 配置文件(默认)
- 2.10.3-指定配置文件初始化(可启动多个数据库)
- 2.10.4-记录临时密码(后面登录使用)
- 2.10.5-查看初始化成功产生文件
- 2.11-启动 MySQL
- 2.11.1-使用 /etc/my.cnf 配置文件(默认)
- 2.11.2-初始化的配置文件需要指定
- 2.11.3-查看 MySQL 进程
- 3-连接 MySQL
- 3.1-登录 MySQL
- 3.1.1-使用 /etc/my.cnf 配置文件(默认)
- 3.1.2-初始化的配置文件需要指定
- 3.2-修改 MySQL 密码
- 4-常见问题
- 4.1-初始化 MySQL 失败
- 4.2-无法远程登录 MySQL
- 4.2.1-是否启动成功
- 4.2.2-是否占用系统 3306 端口
- 4.2.3-是否可以 ping 通服务器
- 4.2.4-关闭防火墙
- 4.2.5-再次远程登录 MySQL
- 4.2.6-授权用户远程访问
- 4.2.7-远程登录 MySQL 成功
- 4.3-用户授权报错 1064 (42000)
- 4.4-Navicat 连接 MySQL 报 2059 错误
1-下载 MySQL
1.1-官方下载
- http://dev.mysql.com/downloads/
CentOS
和Red Hat
版本差别不大,可以选择Red Hat
版本或者Linux-Generic
通用版本。
1.2-百度云下载
- 链接:https://pan.baidu.com/s/1NW_3_w3dg5ev42nUKqcocQ
- 提取码:
70mn
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.2
中mysql_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;
还没有评论,来说两句吧...