CentOS 7 上安装 MySQL 8.0.40 (二进制安装)

要在 CentOS 7 上安装 MySQL 8.0.40,按照以下步骤操作:

下载安装包。

https://dev.mysql.com/downloads/mysql/

下载之前查看系统c++版本

解压安装包

首先,解压下载的 .tar.xz 安装包。

bash 复制代码
cd /path/to/your/downloads
tar -xvf mysql-8.0.40-linux-glibc2.28-x86_64.tar.xz

解压后,会得到一个 mysql-8.0.40-linux-glibc2.28-x86_64 目录。

移动到合适的位置

接下来,你可以将解压后的目录移动到你希望安装 MySQL 的位置,通常是 /usr/local

bash 复制代码
sudo mv mysql-8.0.40-linux-glibc2.28-x86_64 /usr/local/mysql

创建 MySQL 用户和组

为了安全性,MySQL 应该运行在专用的用户和组下。

bash 复制代码
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

创建 MySQL 数据目录

接下来,创建数据存储目录,并给 MySQL 用户设置适当的权限。

bash 复制代码
sudo mkdir /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql

配置环境变量

为了方便使用 MySQL 命令,你需要将 MySQL 的 bin 目录添加到 PATH 环境变量中。编辑 /etc/profile 文件。

bash 复制代码
sudo vi /etc/profile

在文件末尾添加以下内容:

bash 复制代码
export PATH=$PATH:/usr/local/mysql/bin

保存并退出编辑器。然后执行以下命令使改动生效:

bash 复制代码
source /etc/profile

创建配置文件

bash 复制代码
touch /etc/my.cnf
bash 复制代码
[mysqld]                              
port=3306               
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock                   
max_connect_errors=10                         
character-set-server=utf8mb4                          
default-storage-engine=INNODB                               
user=root
#skip-grant-tables  

[client]                                                     
port=3306                              
socket=/usr/local/mysql/data/mysql.sock                                                                
default-character-set=utf8mb4

备注:不要有空格,否则会找不到socket连接

初始化 MySQL 数据目录

使用 MySQL 自带的 mysqld 工具初始化数据目录:

bash 复制代码
sudo /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --console --user=root

初始化成功后,会有一个临时密码

bash 复制代码
[root@localhost mysql]# ./bin/mysqld --defaults-file=/etc/my.cnf --initialize --console --user=root
2024-12-03T10:56:54.844764Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.40) initializing of server in progress as process 11446
2024-12-03T10:56:54.852440Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-12-03T10:56:55.144832Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-12-03T10:56:56.594319Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: FhN9Yk=/Cdus

删除 mysql/data目录即可重新初始化

创建 mysql.sock文件(重要,非常重要的一步)

bash 复制代码
cd  data/
touch mysql.sock

启动mysql 服务

bash 复制代码
sudo /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

查看mysql是否启动

bash 复制代码
执行命令  ps -ef | grep mysql

登录 mysql 数据库

bash 复制代码
sudo /usr/local/mysql/bin/mysql --socket=/usr/local/mysql/data/mysql.sock -u root -p

完成!

到此为止,你已经成功安装 MySQL 8.0.40。

常用命令(扩展)

bash 复制代码
# 初始化
sudo /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --console --user=root

#启动服务
sudo /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

#停止服务
sudo /usr/local/mysql/bin/mysqladmin -u root -p shutdown
#停止服务(二)
ps aux|grep mysql
kill <mysql有关的pid>

# 登录mysql
sudo /usr/local/mysql/bin/mysql --socket=/usr/local/mysql/data/mysql.sock -u root -p

创建账号并授权

bash 复制代码
# 进入mysql
use mysql

# 用如下语句查看MySQL当前加密方式
select host,user,plugin from user;

# 创建账号test01、密码test01, 设置密码插件模式mysql_native_password,并允许该用户从任何主机(即 %)进行连接
CREATE USER 'test01'@'%' IDENTIFIED WITH mysql_native_password BY 'test01';
# 如果你只希望该用户能从本地(localhost)连接,可以将 '%' 改为 'localhost':
CREATE USER 'test01'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test01';

# 授予权限。为  用户授予合适的权限。如果你希望该用户具有所有权限,可以使用以下命令:
GRANT ALL PRIVILEGES ON *.* TO 'test01'@'%' WITH GRANT OPTION;

忘记密码,找回

  1. kill mysql服务
  2. 进入/etc/my.cnf
  3. 添加 在 [mysqld] 下面,添加一行 skip-grant-tables
  4. 重启mysql:sudo /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
  5. 无密码,进入mysql。将登陆密码设置为空。将密码设置为空(此时还不能直接修改密码,必须先设置为空,否则会报错。 skip-grant-tables 模式下无法修改其他密码,只能修改为空 )
bash 复制代码
use mysql; (使用mysql数据表)
update user set authentication_string='' where user='root';(将密码置为空)
quit; (然后退出Mysql)
  1. kill mysql服务。 将/etc/my.cnf 添加的一行skip-grant-tables去掉, 再次启动。
  2. 再次无密码登录
  3. 更新密码,要使用mysql_native_password 插件模式,否则navicat可能链接不上
bash 复制代码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
FLUSH PRIVILEGES;

修改加密模式

bash 复制代码
update user set plugin='mysql_native_password' where user='root';

进入mysql,use mysql,直接update加密模式,退出来,原密码就无法登录了

在Mysql 8版本中,必须分两步来实现设置用户权限

在Mysql 8版本中,不能使用

bash 复制代码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'WITH GRANT OPTION;

这一行命令来设置用户权限,必须分两步来实现设置用户权限【先创建用户、在对该用户分配用户权限】,最后刷新权限

bash 复制代码
CREATE USER 'test2'@'%' IDENTIFIED WITH mysql_native_password BY 'test2';
GRANT ALL PRIVILEGES ON *.* TO 'test2'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

或者

bash 复制代码
CREATE USER 'test3'@'%' IDENTIFIED BY 'test3';
GRANT ALL PRIVILEGES ON *.* TO 'test3'@'%' WITH GRANT OPTION;
update user set plugin='mysql_native_password' where user='test3';
FLUSH PRIVILEGES;

然后外部就可以通过账户密码访问了。

相关推荐
致奋斗的我们22 分钟前
HAProxy介绍与编译安装
linux·汇编·数据库·mysql·青少年编程·haproxy·openeurler
Mr-Apple1 小时前
MySQL的Union和OR查询
android·数据库·mysql
hxung2 小时前
MySQL面试学习
学习·mysql·面试
莳花微语2 小时前
使用MyCAT实现分布式MySQL双主架构
分布式·mysql·架构
he258193 小时前
centOS 7.9 安装JDK MYSQL
java·mysql·centos
夜泉_ly5 小时前
MySQL -安装与初识
数据库·mysql
月光水岸New8 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
我爱松子鱼8 小时前
mysql之规则优化器RBO
数据库·mysql
希忘auto10 小时前
详解Redis在Centos上的安装
redis·centos
人间打气筒(Ada)10 小时前
MySQL主从架构
服务器·数据库·mysql