CentOS 7 安装MySQL 5.7

目录

一、下载

二、配置

1、在安装的路径下创建data文件夹(后续配置中要用到)

2、配置my.cnf文件

3、添加mysql用户、mysql组

三、安装启动

1、初始化mysql数据库(安装数据库)

2、给 /etc/init.d 文件夹拷贝 mysql 服务脚本

3、启动MySQL

4、遇到的问题

启动问题1:

启动问题2

启动问题3

执行命令 mysql 问题1

执行命令 mysql 问题2

四、登录修改密码

1、登录

2、修改密码

3、退出命令行

五、授权远程主机允许连接mysql数据库

启动问题1


一、下载

1、下载安装包

登录mysql官方网站 https://www.mysql.com/
找到适合自己安装机型的安装包,如下图所示:

2、解压:使用 tar -zxvf 文件名进行解压。

3、移动路径、文件夹改名:将解压的文件夹移动到usr路径下自定义一个文件夹

移动路径:

使用命令 mv 当前文件名(或路径) 空格 移动到的目标路径/(例如:mv anaconda-ks.cfg 1dir/)

mv /home/marvin/My_Software/Development/mysql-5.7.26-linux-glibc2.12-x86_64 /usr/my_develop_software

修改文件夹名:

使用命令 mv 当前文件名(或路径) 空格 新文件名(例如:mv anaconda-ks.cfg demo.bak)

mv /usr/my_develop_software/mysql-5.7.26-linux-glibc2.12-x86_64/ mysql-5.7

二、配置

1、在安装的路径下创建data文件夹(后续配置中要用到)

#进入迁移到的mysql主目录下创建data 目录
cd /usr/my_develop_software/mysql-5.7

#创建文件夹
mkdir data

2、配置my.cnf文件

修改配置文件:/etc/my.cnf  配置不对的话,后面初始化不全,会拿不到默认密码。

vim /etc/my.cnf

从mysql5.7开始不会自动生成my.cnf文件配置,所以需要手动创建。my.cnf文件输入以下内容

basedir:设置mysql的安装目录

datadir:设置mysql数据库的数据的存放目录

需要注意的是datadir参数,这里自己指定了data目录,data目录是不存在的需要我们手动创建

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
# socket通信配置
socket=/var/lib/mysql/mysql.sock

[mysqld]
# 跳过权限表校验:如果你在my.cnf中的有添加"skip-grant-tables",那么任何的帐号用任何的密码(当然也包括空)都可以登录到mysql数据>库
#skip-grant-tables
# 作用是禁止域名解析:在mysql的授权表中就不能使用主机名了,只能使用IP 
skip-name-resolve
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=/usr/my_develop_software/mysql-5.7
# 设置mysql数据库的数据的存放目录
datadir=/usr/my_develop_software/mysql-5.7/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M

3、添加mysql用户、mysql组

为centos添加mysql用户组、mysql用户

groupadd mysql

useradd -r -g mysql mysql

chown -R mysql:mysql /usr/my_develop_software/mysql-5.7/

#查看组和用户情况

cat /etc/group | grep mysql

cat /etc/passwd |grep mysql

三、安装启动

1、初始化mysql数据库(安装数据库)

进入bin路径下,初始化mysql数据库

注意:

  1. 控制台会输出临时密码,请记下: root@localhost:xxxxxx
  2. 初始化命令里面的两个路径配置(需要改为自己的)
#进入bin路径下
cd /usr/my_develop_software/mysql-5.7/bin

#执行初始化安装命令
./mysqld --initialize --user=mysql --basedir=/usr/my_develop_software/mysql-5.7 --datadir=/usr/my_develop_software/mysql-5.7/data

 如果出现如下图所示则为安装成功 

2、给 /etc/init.d 文件夹拷贝 mysql 服务脚本

找到mysql.server文件,这个文件据说与mysqld文件一模一样,只是文件名不同

先将安装目录下 /support-files/mysql.server文件拷贝到 /etc/init.d/ 文件夹中并改名为 mysql

cp /usr/my_develop_software/mysql-5.7/support-files/mysql.server /etc/init.d/mysql

3、启动MySQL

 运行启动命令

# 启动命令
service mysql start

# 检查状态命令
service mysql status

# 关闭命令
service mysql stop

4、遇到的问题

启动问题1:

root 用户执行 

service mysqld start

报错:启动mysqld.service失败:未找到(找不到mysqld服务)

[root@localhost ~]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
Failed to start mysqld.service: Unit not found.

下面两条命令都会出现此问题

  • service mysqld status
  • systemctl status mysqld

解决方案:

找到mysql.server文件,这个文件据说与mysqld文件一模一样,只是文件名不同

先将安装目录下 /support-files/mysql.server文件拷贝到 /etc/init.d/ 文件夹中并改名为 mysql

cp /usr/my_develop_software/mysql-5.7/support-files/mysql.server /etc/init.d/mysql

启动问题2

报错:mysqld_safe log-error 配置对应的路径不存在(/etc/my.cnf 文件中)

 [root@localhost support-files]# service mysql start
Starting MySQL.2022-04-29T17:02:44.368007Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
 ERROR! The server quit without updating PID file (/usr/my_develop_software/mysql-5.7/data/localhost.localdomain.pid).

原因:没有路径、没有文件、没有权限,创建路径和文件就可以解决了

之前修改的配置文件 /etc/my.cnf 中最初默认就有 mysqld_safe 这个配置,但是现实中没有对应路径

#创建路径
mkdir /var/log/mariadb
#创建文件
touch /var/log/mariadb/mariadb.log
#设置权限
chown -R mysql:mysql /var/log/mariadb/

启动问题3

报错:mysqld_safe配置对应的路径不存在(/etc/my.cnf 文件中)

[root@localhost ~]# service mysql start
Starting MySQL.2022-04-29T17:37:33.168438Z mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
 ERROR! The server quit without updating PID file (/usr/my_develop_software/mysql-5.7/data/localhost.localdomain.pid).

#创建路径
mkdir /var/lib/mysql
#设置权限
chown -R mysql:mysql /var/lib/mysql

执行命令 mysql 问题1

报错:安装启动好后不识别mysql命令

 

[root@localhost lib]# mysql
bash: mysql: command not found...

解决方案:配置mysql环境变量

使用vi命令更新配置文件

vi /etc/profile

将如下配置添加至文件中,然后保存退出 

# mysql
export PATH=$PATH:/usr/my_develop_software/mysql-5.7/bin

注意:要使环境变量生效需要执行下面命令(重新加载配置文件)

source /etc/profile

执行命令 mysql 问题2

报错:不能通过socket连接到mysql服务

[root@localhost mysql]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

解决方案:

检查 /etc/my.cnf 文件里面 [mysql] 下配置 socket 文件路径是否存在(注意如果没有配置socket ,可能会去找这个默认的文件路径 /tmp/mysql.sock

[mysql] 中配置加上 socket 配置:

socket=/var/lib/mysql/mysql.sock

四、登录修改密码

1、登录

密码使用安装时返回的临时密码 

mysql -u 用户名 -p

mysql -u root -p

2、修改密码

ALTER USER '用户名'@'localhost' IDENTIFIED BY '密码';

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

3、退出命令行

quit

五、授权远程主机允许连接mysql数据库

1、查询配置数据

SELECT host,user,password_expired,password_last_changed,password_lifetime FROM mysql.user;

2、授权命令

grant all privileges on *.* to 'root'@'%' identified by '123456';

注意:请把命令中的【123456】更改为自己的Mysql密码。

其中上面的 host = % 表示任意IP, 即任意IP远程访问mysql数据库, 其用户名为=root

3、刷新授权:

flush privileges;

此时,你的Mysql就可以被远程连接了。

4、关闭授权

revoke all on *.* from dba@localhost;

5、防火墙问题

如果仍然不能从外部链接访问,请检查自己的防火墙配置是否开放了3306端口

或者

【警告真实环境不建议使用此方法】直接将防火墙关闭

常用防火墙命令

  • systemctl status firewalld  #查看状态
  • systemctl restart firewalld  #从启服务
  • systemctl start firewalld    #开启服务
  • systemctl stop firewalld    #关闭服务
  • systemctl disable firewalld.service  #禁止开机启动

 ==================================================================

启动问题1

marvin 用户执行 

service mysqld start

报错:

[marvin@localhost /]$ service mysqld start
Redirecting to /bin/systemctl start mysqld.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password: 
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
==== AUTHENTICATION FAILED ===
Failed to start mysqld.service: Access denied
See system logs and 'systemctl status mysqld.service' for details. 

告诉我执行命令 systemctl status mysqld.service 查看log

报错:mysqld.service 没找到

[marvin@localhost /]$ systemctl status mysqld.service
Unit mysqld.service could not be found.

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值