先删除,卸载旧的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)
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!
问题解决