mysql 安装建议通过yum在线安装,离线安装会多出很多步骤和设置,也更容易出问题。
服务器环境 | centos7 x64 |
---|---|
Mysql | mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar |
-
卸载CentOS7系统自带mariadb# 查看系统自带的Mariadb rpm -qa|grep mariadb mariadb-libs-5.5.44-2.el7.centos.x86_64 # 卸载系统自带的Mariadb rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64 # 删除etc目录下的my.cnf rm /etc/my.cnf
又看了篇文章说,千万不要删除自带的mariadb,直接安装mysql会自动替换mariadb,反而卸载的话会导致未知的问题
-
检查mysql是否存在
# 检查mysql是否存在,有的话可以视情况删除 rpm -qa | grep mysql #删除mysql yum remove mysql-*
-
查看用户和组是否存在
# 检查mysql组和用户是否存在,如无则创建 cat /etc/group | grep mysql cat /etc/passwd | grep mysql # 创建mysql用户组 groupadd mysql # 创建一个用户名为mysql的用户,并加入mysql用户组 useradd -g mysql mysql # 设定mysql用户密码 passwd mysql
-
安装mysql
安装mysql前禁用 SELinux和防火墙#创建解压目录 mkdir mysql-5.7 #解压安装包 tar -xvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz -C mysql-5.7
解压后你会看到有12个rpm包,前5个是必须安装的项:
mysql-community-client(客户端程序和工具)
mysql-community-server(服务器程序和工具)
mysql-community-libs(LIB库)
mysql-community-libs-compat(LIB共享兼容库)
mysql-community-common(公共文件)
mysql-community-devel(开发MySQL必备的头文件和库)
mysql-community-embedded(嵌入式库)
mysql-community-embedded-compat(嵌入式共享兼容库)
mysql-community-embedded-dev(嵌入式开发库)
mysql-community-minimal-debuginfo(最小安装调式信息库)
mysql-community-server-minimal(最小安装服务器程序和工具)
mysql-community-test(测试套件)安装所需rpm包
yum install -y mysql-5.7/mysql-community-{server,client,common,libs}-* #安装成功后查看 rpm -qa|grep mysql
安装内容结束,只有采用离线tar包安装方式才需要添加mysql的用户及用户组,使用在线RPM方式安装时这些会自动设置好。
-
mysql登录配置
mysql安装成功后,本地命令行登录会发现无法成功登录:Access denied for user ‘root’@’localhost’ (using password YES/NO),在线yum安装好像没有这个问题。
大致原因为了加强安全性,MySQL5.7为root用户随机生成了一个密码,这个密码会被记录在error_log中:#查找日志中记录的随机密码 cat /var/log/mysqld.log |grep password #日志里可能有多个随机密码,查找最近的一个,这里是Nussuua7Ep=d 2021-04-08T09:51:07.821577Z 1 [Note] A temporary password is generated for root@localhost: Cs6&aid>h=5v 2021-04-08T09:55:23.934502Z 0 [Note] Shutting down plugin 'validate_password' 2021-04-08T09:55:25.762264Z 0 [Note] Shutting down plugin 'sha256_password' 2021-04-08T09:55:25.762272Z 0 [Note] Shutting down plugin 'mysql_native_password' 2021-04-08T10:03:01.333278Z 1 [Note] A temporary password is generated for root@localhost: Nussuua7Ep=d
使用Nussuua7Ep=d密码登录
mysql -uroot -p
如果提示错误:Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
并且在默认目录/var/lib/mysql/ 下找不到mysql.sock文件,可以简单地通过重启服务器重新创建得到它,因为服务器在启动时重新创建它。
重启后即可正常登录mysql随机密码登录后,使用功能会受限,系统提示需要修改mysql的root账号密码
#设置新密码 SET PASSWORD = PASSWORD('123456'); #上面语句会报错,默认要求密码必须满足:数字 小写字母 大写字母 特殊字符 长度至少8位 #按符合要求的密码重新进行设置 #设置符合要求的密码后重新登录mysql即可使用其它功能 #比如修改密码策略:只限制密码长度为8位以上 set global validate_password_policy = 0;
开放mysql访问权限
#打开mysql库 use mysql; #检索 user 和 host 字段 select user,host from user; +---------------+-----------+ | user | host | +---------------+-----------+ | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +---------------+-----------+ 3 rows in set (0.00 sec) #如果没有 user=root ,host = % 的用户,则执行下面语句 update user set host='%' where user='root'; #给 root 授权(所有权限, 其中两个root 分别代表 “用户名”和“密码” ) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; #让赋予的权限立即生效 flush privileges;
6.配置mysql数据存放位置
默认Data数据存储目录在 /var/lib/mysql ,往往为了数据安全或更大的存储空间等原因,经常会修改数据存储目录:比如外挂硬盘等其它数据分区,如果默认位置可以满足要求,这一步可以忽略#新建存放的目录 data mkdir -p /data #复制默认存储文件到默认安装路径(同时负责权限、熟悉等) cp -rap /var/lib/mysql /data #将新建的目录所有者更换为mysql用户 chown -R mysql:mysql data/mysql/ #为mysql.socket加链接 ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock
修改mysql配置文件 /etc/my.cnf,根据上面路径调整存储目录
vim /etc/my.cnf
修改数据目录配置如下
# read_rnd_buffer_size = 2M # 注释默认路径 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # 修改实际路径 datadir=/data/mysql socket=/data/mysql/mysql.sock
-
最后配置mysql随机启动
systemctl enabled mysqld
安装结束后会在Linux中的各种目录生成必要的文件,如下表
内容 | 位置 |
---|---|
脚本 | /usr.bin |
mysqld服务 | /usr/sbin |
配置文件 | /etc/my.cnf |
数据目录 | /data/mysql |
错误日志 | /var/log/mysqld.log |
私有安全文件 | /var/lib/mysql-files |
系统初始脚本 | /etc/init.d/mysqld |
Pid文件 | /var/run/mysql/mysqld.pid |
共享文件 | /usr/share/mysql |
2 thoughts to “centos7 离线安装mysql”