下载 安装 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/

CentOSRed 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.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;

7. Lock 同步锁相关推荐

  1. java同步锁实例_Java lock同步锁使用实例解析

    这篇文章主要介绍了Java lock同步锁使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1)Lock是一个接口,而synchroniz ...

  2. 7.生产者消费者 案例 (使用Lock 同步锁 方式,使用Condition完成线程之间的通信)...

    1 /* 2 * 生产者消费者 案例 (使用Lock 同步锁 方式,使用Condition完成线程之间的通信) 3 * */ 4 public class TestProductorAndConsum ...

  3. Lock同步锁--线程同步

    Lock-同步锁 Lock是java5提供的一个强大的线程同步机制--通过显示定义同步锁对象来实现同步.Lock可以显示的加锁.解锁.每次只能有一个线程对lock对象加锁. Lock有ReadLock ...

  4. Syschronized同步锁和lock同步锁的区别

    Syschronized和lock的区别 1.Lock是显式锁(手动开启和关闭锁,别忘记关闭锁), synchronized是隐式锁,出了作用域自动释放 2,Lock只有代码块锁,synchroniz ...

  5. 线程的同步-----Lock同步锁

    Lock是java5提供的一个线程同步机制--实现提供了比使用synchronized方法和语句可获得的更广泛的锁定操作. ReadLock.WriteLock.ReentrantLock 是Lock ...

  6. educoder 使用线程锁(lock)实现线程同步_性能:Lock的锁之优化

    Lock / synchronized Lock锁的基本操作是通过乐观锁实现的,由于Lock锁也会在阻塞时被挂起,依然属于悲观锁 synchronizedLock实现方式JVM层实现Java底层代码实 ...

  7. 同步锁Lock的使用

    2019独角兽企业重金招聘Python工程师标准>>> //数据同步锁保证数据的同步操作  private static Lock lock=new ReentrantLock(); ...

  8. java同步锁售票_Java基础学习笔记: 多线程,线程池,同步锁(Lock,synchronized )(Thread类,ExecutorService ,Future类)(卖火车票案例)...

    学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程:线程是 ...

  9. java 同步方式 lock_Java的同步锁(Lock)

    从Java 5开始,Java提供了一种功能更强大的线程同步机制一-通过 显式定义同步锁对象来实现同步,在这种机制下,同步锁由Lock对象充当.Lock提供了比synchronized方法和synchr ...

最新文章

  1. 蜜罐的详细配置过程以及所需要的的软件!以及全部配置!
  2. 5gnr帧结构特点有哪些_厂区隔离网有哪些特点?为什么普遍采用框架式结构?...
  3. 试了下CommonLisp的WEB开发
  4. ubuntu15.04中安装mysql和mysql-workbench
  5. Fabric的6大特性
  6. 用php写一个可以抽取随机数的工具一次只抽四个怎么实现?_面试了一个32岁的程序员,场面一度很尴尬。...
  7. Android设计模式之——迭代器模式
  8. LeetCode 1071. 字符串的最大公因子(字符串的最大公约数)
  9. 一日之计在于晨,早起挑战万元大奖!
  10. tf.transpose()函数(转)
  11. python读取写入文件_Python读取文件,写入文件,打开文件,删除文件,复制文件
  12. AndroidStudio使用XmlPullParser解析xml文件
  13. VMware ESXi5.0防火墙命令
  14. 水晶易表Xcelsius 2008安装常见问题小结
  15. 高级路由交换题库 答案与解释
  16. 2022第十一届PMO大会(线上会议)成功召开
  17. DHTMLX Diagram JavaScript/HTML5 Pro Library:5.0
  18. Java String 真的是不可变的吗
  19. PyQt5入门(三)
  20. 为什么在太阳能应用中使用气象站

热门文章

  1. Windows10 IoT 企业版 LTSC 2021安装应用商店
  2. 2014 acm亚洲区域赛(北京)总结
  3. VMware创建虚拟机时出现 network bot from intel e1000
  4. 认识控制台-什么是控制台?
  5. Java毕业设计_基于BootStrap的晴雅花艺交流论坛的开发
  6. HiFT: Hierarchical Feature Transformer for Aerial Tracking分层特征Transformer的无人机跟踪
  7. 常见的NoSQL数据库介绍
  8. m序列码产生电路设计与仿真
  9. aso标题关键词可以重复吗
  10. 高斯图、高斯球、高斯映射