linux下安装mysql

方式一:源码包安装

环境介绍:本安装教程基于虚拟机CentOS7.6版本进行安装,mysql版本为5.7版本。

一、卸载已安装的mysql服务

由于我原本在虚拟机已安装过mysql,所以这里我需要先卸载掉mysql才能进行实验安装教程,若你从未安装过mysql无需进行这一步操作。

查看是否安装有mysql服务可以通过以下命令:

[root@localhost ~]# rpm -qa | grep mysql
mysql80-community-release-el7-.noarch
mysql-community-client-5.7.-.el7.x86_64
mysql-community-libs-5.7.-.el7.x86_64
mysql-community-server-5.7.-.el7.x86_64
mysql-community-common-5.7.-.el7.x86_64
mysql-community-libs-compat-5.7.-.el7.x86_64
[root@localhost ~]#

查看mysql是否正在运行,若在运行,应先将服务停止再进行卸载

[root@localhost ~]# service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Sat -- :: CST; 28s ago
Docs: man:mysqld()
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=/SUCCESS)
Process: ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=/SUCCESS)
Main PID: (code=exited, status=/SUCCESS) Jul :: localhost.localdomain systemd[]: Starting MySQL Server...
Jul :: localhost.localdomain systemd[]: Started MySQL Server.
Jul :: localhost.localdomain systemd[]: Stopping MySQL Server...
Jul :: localhost.localdomain systemd[]: Stopped MySQL Server.
[root@localhost ~]# service mysqld stop

开始卸载

[root@localhost ~]# rpm -e $(rpm -qa | grep mysql-)
error: Failed dependencies:
libmysqlclient.so.()(64bit) is needed by (installed) postfix-:2.10.-.el7.x86_64
libmysqlclient.so.(libmysqlclient_18)(64bit) is needed by (installed) postfix-:2.10.-.el7.x86_64
[root@localhost ~]#

由于有些库被其他服务依赖无法卸载,需要先卸载依赖该库的服务。这里我们直接用--nodeps参数忽略依赖

[root@localhost ~]# rpm -e $(rpm -qa | grep mysql-) --nodeps
[root@localhost ~]#
[root@localhost ~]# rpm -qa | grep mysql
[root@localhost ~]#

卸载完成

二、下载源码包

官网mysql5.7源码包下载地址:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.26.tar.gz

下载完成后,我们根据官方的安装文档一步一步来操作。

警告:文档提示对于用yum安装过mysql的linux环境,需要彻底的卸载干净,将原有的数据库文件以及配置文件删除。

rpm -qa | grep -i mysql
rpm -qa | grep -i mariadb
rpm -e postfix mariadb-libs redhat-lsb-core
[root@localhost src]# rm -rf /var/lib/mysql
[root@localhost src]# rm -rf /var/log/mysqld.log
[root@localhost src]# rm -rf /etc/my.cnf

重要:mysql依赖于libaio库,对于5.7.19以及之后的mysql,它将依赖于libnuma库,可以通过yum来进行搜索安装。

源码安装所需工具

1. CMake,用来在所有平台构建框架,可从 http://www.cmake.org下载

2. 一个C++编译器

3. boost C++库,版本为Boost 1.59.0,boost安装好后需要指定它的目录位置,cmake . -DWITH_BOOST=/usr/local/boost_1_59_0

4. ncurses库

5. bison库

三、正式开始安装

安装Boost 1.59.0,下载地址:https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

需要先下载编译器才能编译

[root@localhost ~]# yum install -y gcc-c++ gcc
---省略安装过程---

解压缩编译安装(好像不用安装,只要cmake参数指定该目录就行)

[root@localhost src]# tar -xzf boost_1_59_0.tar.gz
[root@localhost src]# cd boost_1_59_0
[root@localhost boost_1_59_0]#
[root@localhost boost_1_59_0]# ./bootstrap.sh --prefix=/usr/local/boost/
[root@localhost boost_1_59_0]# ./b2 install
编译过程时间较长. . .
common.copy /usr/local/boost/lib/libboost_timer.a
gcc.compile.c++ bin.v2/libs/test/build/gcc-4.8./release/link-static/threading-multi/test_main.o
gcc.archive bin.v2/libs/test/build/gcc-4.8./release/link-static/threading-multi/libboost_test_exec_monitor.a
common.copy /usr/local/boost/lib/libboost_test_exec_monitor.a
...failed updating targets...
...skipped targets...
...updated targets...
[root@localhost boost_1_59_0]#

安装依赖库

[root@localhost src]# yum install -y cmake numactl-libs ncurses ncurses-devel bison

解压缩源码包,进入源码包配置环境参数

[root@localhost mysql-5.7.26]# tar xf mysql-5.7.26.tar.gz
[root@localhost mysql-5.7.]# cmake . -DWITH_BOOST=/usr/local/src/boost_1_59_0 \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DMYSQL_DATADIR=/var/mysql/data \
> -DSYSCONFDIR=/etc \
> -DDEFAULT_CHARSET=utf8mb4 \
> -DDEFAULT_COLLATION=utf8mb4_bin

开始编译安装,时间可能比较长

[root@localhost mysql-5.7.]# make && make install

创建mysql用户和组,以及文件所有者

[root@localhost mysql-5.7.]# useradd -r -s /bin/false mysql
[root@localhost mysql-5.7.]# ll -d /usr/local/mysql
drwxr-xr-x. root root Jul : /usr/local/mysql
[root@localhost mysql-5.7.]# chown -R mysql:mysql /usr/local/mysql/
[root@localhost mysql]# mkdir -p /var/mysql/data
[root@localhost mysql]# chown -R mysql:mysql /var/mysql/data

初始化服务程序

shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
shell> bin/mysqld_safe --user=mysql &
shell> cp support-files/mysql.server /etc/init.d/mysql.server

初始化时会有日志显示出来,里面就有数据库的初始密码,需要登录数据库重置密码

[root@localhost mysql]# bin/mysqld --initialize --user=mysql
--23T07::.024968Z [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
--23T07::.707093Z [Warning] InnoDB: New log files created, LSN=
--23T07::.825200Z [Warning] InnoDB: Creating foreign key constraint system tables.
--23T07::.887278Z [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 395372bf-ad1f-11e9--000c2966b1a5.
--23T07::.894216Z [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
--23T07::.898770Z [Note] A temporary password is generated for root@localhost: ZhsIqjl1!aL*

添加命令进环境变量

vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
shell> source /etc/profile.d/mysql.sh

进入数据库,修改初始密码

[root@localhost mysql]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is
Server version: 5.7. Copyright (c) , , Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
Query OK, rows affected (0.00 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
rows in set (0.00 sec) mysql>

设置开机启动服务

[root@localhost mysql]# chkconfig mysql.server on
[root@localhost mysql]# service mysql.server status  # 查看mysql启动状态
SUCCESS! MySQL running ()
[root@localhost mysql]#

由于5.7版本后都没有初始的my.cnf文件,需要自己创建,我们创建/etc/my.cnf文件

vim /etc/my.cnf
[mysqld]
log-error=/var/log/mysqld.log

方式二:yum 安装mysql

下载mysql安装源

yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

选择安装mysql版本,这里我们安装5.7版本

yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community

开始安装

yum install mysql-community-server

开启服务,并设置自启

service mysqld start
systemctl enable mysqld

查看初始密码

grep 'temporary password' /var/log/mysqld.log

Windows下安装mysql

下载mysql压缩包

进入安装包目录,创建data文件夹,进入命令行界面,记住是在bin目录下

mysqld --initialize-insecure    # 不安全初始化
# 或者
mysqld --initialize  # 安全初始化,会有初始密码
mysqld --install # 安装
net start mysql  # 开启服务
mysql -uroot -p # 登录

若是安全初始化,需要在日志中查看初始密码,日志在安装目录/data/下,以.err结尾的文件,里面有一行有temporary password就是初始密码

如果要在任何目录都能连接mysql,需要将bin/目录添加入环境变量,window中mysql的配置文件为安装包目录下自主创建my.ini文件

至此,mysql安装教程结束。

忘记密码修改方法

首先关闭mysql服务

net stop mysql  # window
# 或者
service mysql stop  # linux

启动忽略模式,会进入阻塞状态

mysqld --skip-grant-tables

打开另一终端进行登录,无需密码,登录后修改密码

mysql -uroot -p
update mysql.user set authentication_string=password('') where user='root' and host='localhost';  # 修改密码

总结:

这是我第一次源码包安装mysql,发现自己还是对于linux不太熟悉,很多常见目录不知道用途,编译的过程中也遇到了很多的报错

主要是通过搜索引擎解决的,遇到报错先看报错信息,很多报错信息都是很容易看懂的,试着自己解决下报错确实会有很大的成就感,

通过这次安装,也知道了源码包安装是多么的繁琐,之前用yum安装简直是太方便了,不过用源码包安装才能让自己对这个软件的环境

更加的熟悉。

安装mysql教程的更多相关文章

  1. 阿里云Centos7上安装MySQL教程

    1 基本安装过程 1.查看系统是否安装了mysql软件 # rpm -qa|grep -i mysql 2.将已经安装过的软件卸载掉.注意:这样的卸载是不彻底,不过这里够用了 # yum remove ...

  2. CentOS7.5 安装MySql教程

    CentOS7位安装MySql教程 1.先检查系统是否装有mysql rpm -qa | grep mysql 2.下载mysql的repo源 wget http://repo.mysql.com/m ...

  3. Ubuntu 20.04上安装MySQL教程,ubuntu安装mysql

    在Ubuntu 20.04上安装MySQL教程 先决条件 确保您以具有sudo特权的用户身份登录. 在Ubuntu上安装MySQL 在撰写本文时,Ubuntu存储库中可用的MySQL的最新版本是MyS ...

  4. linux(centos)上安装mysql教程,为需要远程登录的用户赋予权限

    最近把之前学生时代的win server换成了linux(centos)系统,因为win对于部署一些项目时候比较麻烦,直接入正题 1.准备阶段 我使用xshell工具管理服务器,相应下载和安装自行百度 ...

  5. CentOS7 64位安装mysql教程

    参考链接:http://baijiahao.baidu.com/s?id=1597184796823517712&wfr=spider&for=pc https://www.cnblo ...

  6. centeros6.8 下安装mysql教程

    1.1 安装Mysql 1.1.1 检查 l 检查是否已安装mysql的相关包 [root@localhost ~]# rpm -qa|grep -i mysql 一般情况下,centeros系统中会 ...

  7. Linux安装mysql教程

    安装之前需要先卸载mysql 1.1.下载压缩包 [root@guohaien package]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7 ...

  8. linux快速安装mysql教程

    #安装mysql服务器:yum install mysql-server #设置开机启动chkconfig mysqld on#现在启动服务service mysqld start #设置root初始 ...

  9. Centos7 安装mysql教程

    参考原文:http://www.centoscn.com/mysql/2016/0315/6844.html 环境 CentOS 7.1 (64-bit system) MySQL 5.6.24 Ce ...

随机推荐

  1. Java实现 蓝桥杯 基础练习 特殊的数字

    基础练习 特殊的数字 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333.编程求所 ...

  2. Java实现 LeetCode 1两数之和

    1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这 ...

  3. java实现第四届蓝桥杯危险系数

    危险系数 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个危险系数DF( ...

  4. java实现第六届蓝桥杯九数分三组

    九数分三组 题目描述 1~9的数字可以组成3个3位数,设为:A,B,C, 现在要求满足如下关系: B = 2 * A C = 3 * A 请你写出A的所有可能答案,数字间用空格分开,数字按升序排列. ...

  5. Flask 项目目录蓝图

    Flask 项目目录蓝图 小型项目 大型项目 定义蓝图 注册蓝图 template_folder="XXX" 参数是指 模板文件夹 注意 优先是找templates 在找自己指定的 ...

  6. shell编程(一):功能、执行、基础

    1.shell的功能 (1)自动化批量初始化系统:对N台系统初始化(装系统时对系统的时区.yum源.软件包的更新.安全的设置进行初始化) (2)自动化批量部署软件程序:(LAMP/LNMP/Tomca ...

  7. PyQt5 模块modules

    The QtCore module contains the core non-GUI functionality. This module is used for working with time ...

  8. 树莓派配置文档config.txt说明

    原文连接:http://elinux.org/RPi_config.txt 由于树莓派并没有传统意义上的BIOS, 所以现在各种系统配置参数通常被存在"config.txt"这个文 ...

  9. layui导出表格的两种方法

    一.不熟悉layui小白使用方法 1.引入如下js文件: 2.编写如下函数: 3.表格ID要与函数取值保持一致即可,再就是自定义一个按钮触发事件 二.引入插件使用方法 1.layui官网下载插件包: ...

  10. SpringMVC+Mybatis初尝试

    一个月前简单学完了SpringMVC框架和Mybatis框架,一直没有使用过,今天主要用它做了个简单的学生管理系统,不过第一次用框架,实现的功能简单,比较low. 注:这里使用的数据库是SQLServ ...