进阶篇之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数字类型自增的坑
May 07 MySQL
MySQL COUNT函数的使用与优化
May 10 MySQL
Mysql 用户权限管理实现
May 25 MySQL
浅谈MySQL函数
Oct 05 MySQL
详细聊聊关于Mysql联合查询的那些事儿
Oct 24 MySQL
防止web项目中的SQL注入
Dec 06 MySQL
Mysql事务索引知识汇总
Mar 17 MySQL
Mysql多层子查询示例代码(收藏夹案例)
Mar 31 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
MySql数据库触发器使用教程
Jun 01 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
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
简单的网页广告特效实例
2017/08/19 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
详解supervisor使用教程
2017/11/21 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
学python需要去培训机构吗
2020/07/01 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
德国电子商城:ComputerUniverse
2017/04/21 全球购物
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
商务英语本科生的自我评价分享
2013/11/15 职场文书
机电一体化专业推荐信
2013/12/03 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
业余无线电通联Q语
2022/02/18 无线电
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python