进阶篇之linux环境下安装MySQL数据库


Posted in MySQL onApril 09, 2022

1.概述

对于mysql二进制安装,优点是可以安装到任何路径下,灵活性好,一台服务器可以安装多个mysql。缺点是已经编译过,性能不如源码编译得好,不能灵活定制编译参数。如果用户即不想安装最简单却不够灵活的RPM包,又不想安装复杂费时的源码包,那么已编译好的二进制包将是最好的选择,下面让我们来介绍如何在linux系统下安装mysql服务端。

2.前期准备

2.1下载mysql二进制安装包

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

进阶篇之linux环境下安装MySQL数据库
因为我下载的是mysql-8.0.23-linux-glibc2.12-x86_64.tar版本,如果有最新版本,则下载最新版本就好了。

2.2导入mysql二进制安装包

通过Xftp工具把安装包传输到linux系统package目录去:
进阶篇之linux环境下安装MySQL数据库

3.mysql部署

●解压mysql安装包

--切换到安装目录
cd /app
--解压xz压缩文件
tar -xvf /app/package/mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz

●修改mysql文件夹名称

--把mysql-8.0.23-linux-glibc2.12-x86_64修改为mysql文件夹名称
mv /app/mysql-8.0.23-linux-glibc2.12-x86_64 /app/mysql

●创建data目录

--在mysql根目录下创建data目录,用于存放数据
mkdir /app/mysql/data

●创建mysql用户组和mysql用户

--创建mysql用户组和mysql用户
groupadd mysql
useradd -g mysql mysql

●修改mysql目录权限

--修改mysql目录权限
chown -R mysql.mysql /app/mysql/

●初始化数据库

--先切换到mysql安装目录
cd /app/mysql
--初始化数据库
bin/mysqld --initialize --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data

进阶篇之linux环境下安装MySQL数据库
●配置mysql

--先切换到mysql.support-files目录
cd /app/mysql/support-files
--在mysql/support-files创建文件my-default.cnf
touch my-default.cnf
--复制配置文件到/etc/my.cnf
cp -a ./my-default.cnf /etc/my.cnf
--编辑my.cnf
vim /etc/my.cnf

my.cnf输入如下配置内容:

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
user=mysql
socket=/tmp/mysql.sock
basedir=/app/mysql
datadir=/app/mysql/data

●配置环境变量

--编辑profile文件
vim /etc/profile
--配置mysql环境变量
PATH=/data/mysql/bin:/data/mysql/lib:$PATH
export PATH
--使mysql环境变量生效
source /etc/profile
--看环境变量是否生效
echo $PATH

●启动mysql

cd /app/mysql/bin
systemctl start mysqld
or
service mysql start

启动mysql时候可能会遇到如下错误:
●Failed to start mysqld.service: Unit not found.
进阶篇之linux环境下安装MySQL数据库
or
Starting MySQL.Logging to '/app/mysql/data/dengwu.err'.
... ERROR! The server quit without updating PID file (/app/mysql/data/dengwu.pid).
进阶篇之linux环境下安装MySQL数据库
解决方法如下:

--需要安装mariadb-server
yum install -y mariadb-server
--然后启动mariadb服务
systemctl start mariadb.service
--需要的可以添加mariadb服务开机启动
systemctl enable mariadb.service

●Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.
进阶篇之linux环境下安装MySQL数据库
解决方法如下:

chown -R mysql.mysql /app/mysql/

●Starting MySQL... ERROR! The server quit without updating PID file (/app/mysql/data/dengwu.pid).
解决方法如下:

--查看mysql进程
ps -ef|grep mysqld
--杀死mysql进程
kill -9 mysql进程ID

然后重新启动下mysql:
进阶篇之linux环境下安装MySQL数据库

4.修改mysql密码

root用户第一次登录mysql,因为初始密码我们并不知道,一般情况下我们都会重新设置一个新的密码,具体操作如下:

--编辑my.cnf
vim /etc/my.cnf

输入如下命令行:

default_authentication_plugin=mysql_native_password

如果忘记了密码再加上:

--跳过密码验证(等设置了密码就去掉)
skip-grant-tables

然后登录mysql:

--登录mysql
mysql -u root -p

然后输入命令查看mysql用户组:

--查看mysql用户表
select user,host,authentication_string from mysql.user;

进阶篇之linux环境下安装MySQL数据库
看看root用户没有开启远程连接权限,如果没有则执行如下命令:

--修改root用户可以远程连接
update mysql.user set host='%' where user='root';

开启远程连接权限后,再来修改root用户密码:

--如果host是localhost则@字符后面是localhost,反之则是%,以host结果为准
--修改加密规则
alter user 'root'@'%' identified by 'qwer1234' password expire never;
--更新一下用户的密码
alter user 'root'@'%' identified with mysql_native_password by 'qwer1234';
--刷新权限
flush privileges;
--修改root用户密码
alter user 'root'@'%' identified by 'qwer1234';

进阶篇之linux环境下安装MySQL数据库

如果防火墙开启了,则需要加入允许mysql端口访问权限,具体命令如下:

--允许访问
firewall-cmd --permanent --zone=public --add-port=3306/tcp
--重新加载
firewall-cmd --reload
--查看是否开通访问权限
firewall-cmd --permanent --zone=public --query-port=3306/tcp

然后重新启动mysql:

--重新启动mysql
service mysql restart;

5.配置mysql阿里云安全组策略

登录阿里云->安全组规则->访问规则->入方向->手动添加如下策略:
进阶篇之linux环境下安装MySQL数据库
使用Navicat连接成功:
进阶篇之linux环境下安装MySQL数据库

MySQL 相关文章推荐
MySQL基础(一)
Apr 05 MySQL
Mysql 性能监控及调优
Apr 06 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
MySQL系列之六 用户与授权
Jul 02 MySQL
SpringBoot连接MySQL获取数据写后端接口的操作方法
Nov 02 MySQL
MySQL表类型 存储引擎 的选择
Nov 11 MySQL
MySQL图形化管理工具Navicat安装步骤
Dec 04 MySQL
解决Mysql多行子查询的使用及空值问题
Jan 22 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
Mysql查询时间区间日期列表,不会由于数据表数据影响
Apr 19 MySQL
MySQL数据库 任意ip连接方法
May 20 MySQL
MySQL提升大量数据查询效率的优化神器
Jul 07 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 #MySQL
MySQL数据库查询进阶之多表查询详解
MySQL中一条SQL查询语句是如何执行的
解决MySQL Varchar 类型尾部空格的问题
Apr 06 #MySQL
mysql的单列多值存储实例详解
Apr 05 #MySQL
详细聊一聊mysql的树形结构存储以及查询
mysql查询结果实现多列拼接查询
Apr 03 #MySQL
You might like
我的论坛源代码(九)
2006/10/09 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
php操作xml并将其插入数据库的实现方法
2016/09/08 PHP
PHP实现的日历功能示例
2018/09/01 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
浅析JS刷新框架中的其他页面 && JS刷新窗口方法汇总
2013/07/08 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
python3生成随机数实例
2014/10/20 Python
Python学习笔记之os模块使用总结
2014/11/03 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
Django权限设置及验证方式
2020/05/13 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
邀请书模板
2015/02/02 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA