Cent OS7 安装MYSQL 5.7.22 MySQL Community Server (GPL)(源码安装)及使用问题和解决办法

时间:2022-10-09 21:03:21

先删除,卸载旧的MYSQL。请百度,完了重启虚拟机

我下载的版本是5.7.22

1、直接wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-el7-x86_64.tar.gz

我参考的是这个教程:

https://www.cnblogs.com/cz-xjw/p/8006904.html  【基本以这个教程为准,但也有小部分差异】

2、解压,创建用户

cd /usr/local/
  tar -zxvf MySQL-5.7/mysql-5.7.22-el7-x86_64.tar.gz
  mkdir mysql
  mv MySQL-5.7/mysql-5.7.22-el7-x86_64 mysql

  groupadd mysql  //创建用户组mysql

  useradd -r -g mysql mysql //-r参数表示mysql用户是系统用户,不可用于登录系统,创建用户mysql并将其添加到用户组mysql中

  chown -R mysql mysql/

  chgrp -R mysql mysql/

3、创建配置文件

vim /etc/my.cnf

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

[mysqld]
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

default-time_zone = '+8:00'

保存内容,按esc输入如下命令

:wq!

以上都是放在方my.cnf的内容

4、初始化数据库

#先安装一下这个东东,要不然初始化有可能会报错
yum install libaio
#手动编辑一下日志文件,什么也不用写,直接保存退出
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
【注释:这是一行】

5、查看初始密码

cat /var/log/mysqld.log

执行后关注最后一点:root@localhost: 这里就是初始密码

6、启动服务,进入mysql,修改初始密码,运行远程连接(这里执行完后,密码将变成:123456)

Cent OS7 安装MYSQL 5.7.22 MySQL Community Server (GPL)(源码安装)及使用问题和解决办法
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     【我在目录下用./mysql.server start】
 /usr/local/mysql/bin/mysql -uroot -p你在上面看到的初始密码    
【我在目录下用./mysql -uroot -p

【登入以后使用MYSQL报错,因为需要先修改密码】

mysql> use mysql;

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

【执行这个】 SET PASSWORD = PASSWORD('123456');

            flush privileges;

退出后,再进入密码就是123456了

【修改任何IP地址都可以登录】

mysql> UPDATE `mysql`.`user` SET `Host` = '%',  `User` = 'root'  WHERE (`Host` = 'localhost') AND (`User` = 'root');
Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

再刷新:flush privileges;

7、开机自启

cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysqld
chkconfig --add mysqld


8、配置全局环境变量

编辑/etc/profile文件

# vi /etc/profile

在profile文件底部添加如下两行配置,保存后退出

PATH=/data/mysql/bin:/data/mysql/lib:$PATH

export PATH

设置环境变量立即生效

# source /etc/profile

【测试】

[root@localhost etc]# vim profile
[root@localhost etc]# source profile
[root@localhost etc]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.22 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> exit


使用两天后总结一下问题:

虚拟机关机再开机启动服务报错: /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.pid

大概意思是没有找到/var/run/mysqld/mysqld.pid这个文件,对,确实没有这个文件,别说这个文件,连MYSQLD文件夹都没有了,百度后有人说这是5.7版本中的一个BUG,我感觉也是,为什么会没了呢,因为/VAR/RUN里边的文件都是运行在内存中的,所以重启后文件夹就丢失了。但创建这个目录应该是由数据库来完成的,所以我们只能手动创建,下边会放出自己写的脚本。

还有一个问题,就是关闭数据库服务再打开服务也打不开,一样会提示这个错误,这是因为MYSQLD文件夹还在,“mysqld.pid”这个文件了,也打不开,所以还要手动创建这个文件,创建过程看最上边的教程里有。

创建后你们不要忘记把权限改过去

我在root用户下写的脚本:

mkdir /var/run/mysqld
touch /var/run/mysqld/mysqld.pid

chown -R mysql:mysql /var/run/mysqld


今天无聊又搜索解决方案:

修改/etc/my.cnf配置文件里的参数可以解决

#pid-file=/var/run/mysqld/mysqld.pid ----这是之前的

pid-file=/var/lib/mysqld/mysqld.pid       这是修改之后的

我用root用户创建目录和文件,最后给权限。

[root@localhost etc]# cd /var/lib
[root@localhost lib]# mkdir mysqld
[root@localhost lib]# cd mysqld
[root@localhost mysqld]# touch mysqld.pid
[root@localhost mysqld]# cd ..

[root@localhost lib]# chown mysql:mysql mysqld

之后

[root@localhost lib]# service mysqld start

Starting MySQL.. SUCCESS!

问题解决