7. Lock 同步锁

迷南。 2022-08-02 09:40 280阅读 0赞

下载 安装 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-查看系统版本

  1. cat /etc/redhat-release

在这里插入图片描述

2.2-创建用户和用户组

  1. # 自动创建用户 用户组
  2. useradd mysql
  3. # 设置用户密码
  4. passwd mysql

在这里插入图片描述

2.3-解压免编译包

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

在这里插入图片描述

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

在这里插入图片描述

2.4-解压文件夹重命名

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

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

  1. # 目录 A 重命名 B
  2. mv A B
  3. # 目录 A 移动到目录 B 下并重命名为 C
  4. mv /A /B/C

2.5-解压文件夹软连接

  1. 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

  1. # 客户端设置(客户端的连接参数)
  2. [client]
  3. # 连接 MySQL 使用的端口
  4. port = 3306
  5. # 连接 MySQL 使用的套接字文件
  6. socket = /data/data/mysql/8.0.19_3306/mysql.sock
  7. # 设置字符集
  8. default-character-set = utf8mb4
  9. # 服务端设置
  10. [mysqld]
  11. # 服务id(可高可用时区分)
  12. server_id = 01
  13. # 监听端口
  14. port = 3306
  15. # 启动用户
  16. user = mysql
  17. # 数据库默认编码(5.1以下 default-character-set)
  18. character_set_server = utf8mb4
  19. # 数据库默认比对规则、排序规则
  20. collation_server = utf8mb4_bin
  21. # 该目录为根目录(安装目录)
  22. basedir = /data/opt/mysql-8.0.19_3306
  23. # 数据库初始化数据存放目录(创建文件夹且文件夹中无文件)
  24. datadir = /data/data/mysql/8.0.19_3306/data
  25. # 数据库存放临时文件的目录(创建文件夹)
  26. tmpdir = /data/data/mysql/8.0.19_3306/tmp
  27. # 指定客户端程序与数据库间通讯的套接字文件
  28. socket = /data/data/mysql/8.0.19_3306/mysql.sock
  29. explicit_defaults_for_timestamp = true
  30. [mysqld_safe]
  31. # 数据库错误日志(创建文件夹)
  32. log-error = /data/data/mysql/8.0.19_3306/log/mysqld.log
  33. # 数据库启动后进程文件位置
  34. pid-file = /data/data/mysql/8.0.19_3306/3306.pid

2.7-安装文件权限

  1. # 设置安装文件所属 用户和用户组
  2. chown -R mysql:mysql /data/opt/mysql-8.0.19_3306/
  3. # 设置安装文件调用权限
  4. chmod -R 755 /data/opt/mysql-8.0.19_3306/
  5. # 查看设置结果
  6. ll /data/opt/mysql-8.0.19_3306/

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

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

2.8-创建运行数据文件夹

  1. mkdir -p /data/data/mysql/8.0.19_3306/data
  2. mkdir -p /data/data/mysql/8.0.19_3306/log
  3. mkdir -p /data/data/mysql/8.0.19_3306/tmp

在这里插入图片描述

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

  1. chown -R mysql:mysql /data/data/mysql/8.0.19_3306/
  2. 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 用户

  1. su mysql

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

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

在这里插入图片描述

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

  1. /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 配置文件(默认)

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

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

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

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

在这里插入图片描述

2.11.3-查看 MySQL 进程

  1. 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 配置文件(默认)

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

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

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

  1. /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 密码

  1. # 格式:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
  2. 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

  1. # 数据库初始化数据存放目录(创建文件夹且文件夹中无文件)
  2. 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进程:

    1. ps -ef|grep mysql-8.0.19

    在这里插入图片描述

  • 命令登录MySQL

    1. /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 端口

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

在这里插入图片描述

4.2.3-是否可以 ping 通服务器

在这里插入图片描述

4.2.4-关闭防火墙

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

  1. # 防火墙状态
  2. firewall-cmd --state
  3. # 停止 firewall
  4. systemctl stop firewalld.service
  5. # 禁止 firewall 开机启动
  6. systemctl disable firewalld.service

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

  1. # 查看已开放端口
  2. firewall-cmd --list-ports
  3. # 开启端口:--zone #作用域 --add-port=80/tcp #添加端口(端口/通讯协议) --permanent #永久生效(无此参数重启后失效)
  4. firewall-cmd --zone=public --add-port=80/tcp --permanent
  5. # 关闭 selinux:将 etc/selinux/config 文件中 SELINUX=enforcing 改为 SELINUX=disabled
  6. vi /etc/selinux/config

4.2.5-再次远程登录 MySQL

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

4.2.6-授权用户远程访问

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

  1. # MySQL 命令行模式(初始化的配置文件需要指定)
  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. # mysql db 中存储了用户信息(user 表)
  4. use mysql
  5. # 表格中 root 用户的 host 应该显示 localhost(只支持服务器访问,不支持远程)
  6. select host, user, authentication_string, plugin from user;

在这里插入图片描述

  1. # 创建远程登录用户 密码
  2. CREATE USER 'root'@'%' IDENTIFIED BY 'password';
  3. # 用户登录的加密规则修改为 mysql_native_password*
  4. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
  5. # 授予用户(root)远程访问权限 GRANT ALL(所有权限) %(通配所有 host,可访问远程)
  6. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  7. # MySQL 权限放在 cache(grant表)中,所以必须重新重新加载
  8. flush privileges;
  9. # 表格中 root 用户的 host 已经变成 %(修改成功,可远程访问)
  10. 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**

第二种解决方法:

  1. # 修改加密规则(password 当前密码)
  2. ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
  3. # 修改 root 用户密码(password 设置新密码)
  4. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
  5. # 刷新权限
  6. flush privileges;

发表评论

表情:
评论列表 (有 0 条评论,280人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Lock

    理论整理 1.Lock是显式锁(手动开启,手动关闭,千万不能忘记关闭锁),synchronized是隐式锁,出了作用域会自动释放; 2.Lock只能锁代码块,synch

    相关 +LOCK

    --锁 总结 锁(LOCKING) 是最常用的并发控制机构。是防止其他事务访问指定的资源控制、实现并发控制的一种主要手段。锁是事务对某个数据库中的