很久没用直接使用mysql源码包在linux安装了,今天刚好因为项目环境需要在物理机上搭建一个mysql环境,刚好记录下
MySQL 5.7.32 详细下载安装配置教程
前言
在安装MySQL的时候会遇到很多问题,博客上有很多解决问题的办法,在这里我附上一些链接,遇到问题的朋友们可以阅读参考哈~本文主要针对于刚接触数据库的小白,来安装MySQL数据库。目前官网上的MySQL版本有5.5,5.6,5.7和8,在开发的时候我们一般要选择比最新版低1到2个版本的,因此我选择了5.7作为要安装的数据库
1.下载步骤
- 访问官方网站:https://www.mysql.com/
选择Downloads下的Community,当然如果你想直接到下载页面 地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 
- 下载对应的版本
点击上图的MySQL Community Server,进入下载界面:
- 找到MySQL Community Server 5.7这一链接,点击进入:
- 如果这里找不到入口 可以ctrl + F 搜索下关键字,或者 使用该地址 :这里可以直接输入下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads点击选择以往的版本,当然如果你要用8的版本也行,我自己还没怎么研究过
选择合适的linux版本,这里我们就是用generic 普通的版本就行了 
然后点击下载就行了,这里下载的操作就没有贴出来,相信大家应该也没有问题,如果还有问题,我也不知道怎么说了,对吧,如果遇到一点小问题,不要慌,慢慢解决,这也是我们行业需要的专研精神。
选择合适的方式上传到linux 服务器就行了。
解压
tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
等待等待等待一会儿。。。
再移动并重命名一下
mv mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql 创建mysql用户组和用户并修改权限
为什么要单独创建用户组以及用户来安装启动Mysql?
我们在编译安装的时候创建一个mysql组和一个mysql用户,并把datadir和安装目录属主改为mysql,在MySQL启动的时候,单进程mysqld,该进程的属主就是mysql,这样就保证了mysql服务的独立性,限制了执行MySQL程序的用户的权限,安全性应该还是有所加强的。即便mysql服务被黑掉,得到了mysql用户权限,也不会影响整个系统的安全
groupadd mysql
useradd -r -g mysql mysql 这里又来思考一下:为什么我们为什么部先创建了MySQL用户,然后再使用mysql用户编译安装mysql?
因为mysql 安装初始化的过程中涉及很多的权限,如果使用权限不足的用户去进行安装编译初始化会有多的麻烦。但是为了安全,我们在启动运行的时候使用mysql 用户进行运行。
那么思考 我们是如何使用mysql 用户?上面完全没看见啊。。。。稍等,我们先把权限赋予好
创建数据目录并赋予权限
mkdir -p /data/mysql #创建目录
chown mysql:mysql -R /data/mysql #赋予权限 chown [选项]... [所有者][:[组]] 文件... 配置my.cnf
vim /etc/my.cnf 注意:在这里 我们配置了一个user = mysql 注意倒霉,就是这里,以mysql 身份启动服务器。如果你正在使用MySQL 3.22或更高版本,另一种可选方式是,以Unix根用户身份启动mysqld,并使用--user=user_name选项。mysqld启动,然后在接受任何连接前,切换至Unix用户user_name并以该用户身份运行。 后续我们会看到验证。。。
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true 初始化数据库
进入mysql的bin目录
cd /usr/local/mysql/bin/ 初始化
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize 查看密码
cat /data/mysql/mysql.err
启动mysql,并更改root 密码
先将mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
启动!!!
service mysql start 查看服务
ps -ef|grep mysql 这里注意看一下 第一列 第二行 mysql 用户运行的服务,这里就说明 我们其实是使用mysql 用户运行的 mysql服务。
到这里说明mysql已经安装成功了!!
下面修改密码
首先登录mysql,前面的那个是随机生成的。
先移动到bin目录下
cd /usr/local/mysql/bin/ 登陆命令,需要在mysql bin 目录下执行,因为还没有建立软连接
./mysql -u root -p 再执行下面三步操作,然后重新登录。
1.设置密码
2.过期时间
3.刷新权限
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES; 开启账号允许远程访问,如果不配置,使用工具连接的时候就会提示 not allowed to connect to this mysql server。
这里主要执行下面三个命令(先登录数据库)
use mysql #访问mysql库
update user set host = '%' where user = 'root'; #使root能再任何host访问
FLUSH PRIVILEGES; #刷新 到这你以为就可以了?注意还有你服务器的防火墙,如果不关闭,工具连接会提示 unkonown error。
关闭3306的防火墙
vi /etc/sysconfig/iptables 将下面的端口开放 加入到防火墙配置文件中。注意:尽量放在开放22端口配置下面,不要放在最后,免得不生效
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT 重新启动防火墙
systemctl restart iptables.service 当然如果你是不太重要的环境比如测试或者自己写demo 可以直接把防火墙全部关闭
查看防火墙
systemctl status iptables.service 关闭防火墙
systemctl stop iptables.service 再次允许查看防火墙的命令 你会发现就关闭了
最后还要开启账号允许远程访问
注意:如果你能在linux 上通过命令行直接连接,但是无法使用navicat 或者其他工具进行连,就看看自己的防火墙 以及 是否允许远程机器连接。
提示 unknown error 一般是防火墙原因
提示 not allowed to connect this mysql server 一般是没有配置允许远程机器连接
连接成功
如果不希望每次都到bin目录下使用mysql命令则执行以下命令
ln -s /usr/local/mysql/bin/mysql /usr/bin 附加:
远程授权访问还可以使用、
GRANT ALL ON *.* TO 'root'@'%';
flush privileges; 一些与root 相关的命令
1、授权root用户可以远程登陆
GRANT ALL ON *.* TO 'root'@'%';
2、刷新权限
flush privileges;
3、修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword' PASSWORD EXPIRE NEVER;
4、更新 root 用户密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
5、刷新权限
FLUSH PRIVILEGES;


















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