欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux环境安装MySQL Server 5.7.21

程序员文章站 2022-03-17 20:56:12
...

 

资料参考:一般是网络查询,但需要注意在MySQL官网上下载的版本,google的时候最好精确到版本,因为不同版本的安装方式可能有所不同,而这些“不同”就会造成一些“坑”!本文的版本是最新版本:mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz。故在网络上google的时候查找5.7.21版本的安装资料,不要随便一篇文章就拿来参考!

 

 先搭建一个虚拟机再玩:https://www.linuxidc.com/Linux/2017-04/143102.htm(虚拟机镜像最好使用Desktop版会比较少点坑。。)

 

安装过程大同小异,只不过Linux环境的差异会使你遇到各种意想不到的问题,下面仅针对我此次的安装过程来说明(具体问题具体解决)。

 

1.  建一个存放上传mysql安装tar包的目录

 

cd /home

 

root@ubuntu:/home# mkdir security

 

chmod 777 /home/security/

 

 

 

2.  使用WinSCP工具上传mysql的安装tar包到/home/security目录

 

 

3.  解压该tar包,并将解压后的目录重命名为mysql

 

tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

 

mv mysql-5.7.21-linux-glibc2.12-x86_64 mysql

 

移动到/usr/local目录下:

 

mv mysql /usr/local

 

 

 

4.  检查Linux系统之前是否装过mysql,若装过,需要改端口号或者将之前的服务停掉,相关目录删掉

 

ps -ef|grep mysql

 

 

 

5.  创建用户组mysql,创建用户mysql并将其添加到用户组mysql中,并赋予读写权限

 

groupadd mysql

 

useradd -r -g mysql mysql

 

chown -R mysql mysql/

 

chgrp -R mysql mysql/

 

 

 

6.  先检查有没有安装依赖的包libaio

 

rpm –qa | grep libaio1

 

如果没有需要通过 apt-get install libaio1 libaio-dev来安装

 

注:这一步可能rpm命令也会没有,通过下面的步骤来进行(会耗费较长时间)

 

 apt-get update

 

apt-get upgrade

 

apt-get install <packagename>

 

ap-getubuntu下的一个软件安装方式,它是基于debain

 

 

 

yumredhatcentos下的一个软件安装方式,它是基于Linux的,最好先搞清楚自己的Linux系统版本: cat /proc/version

 

 

 

7.  创建配置文件,保存并退出。

 

vim /etc/my.cnf

 

[client]

 

port = 3306

 

socket = /tmp/mysql.sock

 

 

 

[mysqld]

 

port = 3306

 

character_set_server=utf8

 

init_connect='SET NAMES utf8'

 

basedir=/usr/local/mysql

 

datadir=/usr/local/mysql/data

 

socket=/tmp/mysql.sock

 

log-error=/var/log/mysqld.log

 

pid-file=/var/run/mysqld/mysqld.pid

 

#不区分大小写

 

lower_case_table_names = 1

 

 

 

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

 

 

 

max_connections=5000

 

skip-grant-tables

 

default-time_zone = '+8:00'

 

注:3306是默认端口,若之前有安装过mysql服务,则clientmysqldport都需要改成其他端口如3307,否则初始化的时候会失败。

 

 

 

8.  初始化数据库(比较关键的一步)

 

#手动编辑一下日志文件(用来记录初始密码以及启动日志的),什么也不用写,直接保存退出

 

cd /var/log/

 

 

 

vim mysqld.log

 

wq

 

 

 

chmod 777 mysqld.log

 

chown mysql:mysql mysqld.log

 

 

 

初始化命令:/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US

 

 

 

9.  查看初始密码

 

cat /var/log/mysqld.log |grep 'root@localhost'

 

如:2018-03-28T12:50:49.180634Z 1 [Note] A temporary password is generated for root@localhost: xj7fWyj(NU!u

 

 

 

10.启动mysql服务

 

cd /var/run/

 

 

 

mkdir mysqld

 

 

 

chmod 777 mysqld

 

 

 

cd mysqld

 

 

 

vim mysqld.pid

 

 

 

chmod 777 mysqld.pid

 

 

 

chown mysql:mysql mysqld.pid

 

 

 

/usr/local/mysql/support-files/mysql.server start

 

 

 

/usr/local/mysql/bin/mysql -uroot –p’ xj7fWyj(NU!u’(换成第9步的初始密码)

 

注:-p跟密码之间没有空格,这是个坑!网上好多都有空格.

 

可以看到:

 

mysql: [Warning] Using a password on the command line interface can be insecure.

 

Welcome to the MySQL monitor.  Commands end with ; or \g.

 

Your MySQL connection id is 2

 

Server version: 5.7.21 MySQL Community Server (GPL)

 

 

 

Copyright (c) 2000, 2018, 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>

 

 

 

11.修改root用户初始密码

 

由于上面的密码太复杂,修改自己定义的密码,注意5.7.21版本的sql语句是:

 

mysql> use mysql;

 

Reading table information for completion of table and column names

 

You can turn off this feature to get a quicker startup with -A

 

 

 

Database changed

 

mysql> update user set authentication_string=PASSWORD('123456') where User='root';

 

Query OK, 1 row affected, 1 warning (0.05 sec)

 

Rows matched: 1  Changed: 1  Warnings: 1

 

 

 

12.设置开机自启动

 

cd /usr/local/mysql/support-files

 

 

 

cp mysql.server /etc/init.d/mysqld

 

 

 

chkconfig --add mysqld

 

注:这里chkconfig命令可能又没有。。这样做:

 

apt-get install sysv-rc-conf

 

cp /usr/sbin/sysv-rc-conf /usr/sbin/chkconfig

 

chkconfig mysqld on

 

之后检查下:

 

chkconfig –list可发现mysql的服务:

 

mysqld       2:on       3:on    4:on    5:on

 

说明成功了。

 

 

 

13.检查mysql服务是否安装成功:

 

ps -ef|grep mysql

 

发现:

 

root      29429      1  0 05:55 pts/17   00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/var/run/mysqld/mysqld.pid

 

mysql     29707  29429  0 05:55 pts/17   00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/tmp/mysql.sock --port=3306

 

root      29776  13540  0 05:56 pts/17   00:00:00 /usr/local/mysql/bin/mysql -uroot -px xxxxxxxxxx

 

root      30907  28335  0 06:10 pts/19   00:00:00 grep --color=auto mysql

 

以及3306端口是否开启成功,被MySQL占用:

 

lsof -i:3306

 

结果:

 

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

 

mysqld  29707 mysql   19u  IPv6 293124      0t0  TCP *:mysql (LISTEN)

 

 

 

接下来就可以用navicat连接工具试试了!(目前只有root用户,创建其他账号的过程略)