前面已经安装了jdk,现在安装mysql
mysql-5.7.26安装与前面的版本不同,这里记录下安装过程
参考文献:
- https://segmentfault.com/a/1190000012703513?utm_source=tag-newest
https://blog.youkuaiyun.com/Love_XO/article/details/81502503
1、下载mysql-5.7.26,这里就不说了,自己去官网上下载
2、上传下载的mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz到服务器,我上传到 /opt 目录
3、在/usr/local/中解压压缩包,并改名为mysql
cd /usr/local/
tar -xzvf /opt/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql
4、创建用户组mysql,创建用户mysql并将其添加到用户组mysql中,并赋予读写权限
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql mysql/
chgrp -R mysql mysql/
5、创建配置文件
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'
可以在my.cnf中加上
skip-grant-tables
这句是为了启动mysql服务后,登录mysql时用来跳过密码验证的过程,修改密码后把它删掉就好。
6、初始化数据库
#先安装一下这个东东,要不然初始化有可能会报错
yum install libaio
#手动编辑一下日志文件,什么也不用写,直接保存退出
cd /var/log/
vim mysqld.log
:wq
#这两步在 /var/log/ 目录中执行
chmod 777 mysqld.log
chown mysql:mysql mysqld.log
#初始化mysql服务
/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
7、至此mysql服务已配置完,启动mysql服务
接下来就是用sql来修改root的密码
如果上面的 /etc/my.cnf中加了 skip-grant-tables ,则直接输入 mysql就可以进去
1、进入到mysql目录:
cd /usr/local/mysql
2、执行命令:
启动: service mysqld start 重启:service mysqld restart
3、登录mysql
这里注意:5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string
mysql> use mysql;
mysql> update user set authentication_string=password("你的新密码") where user="root";
mysql> flush privileges;
mysql> quit
到这里root账户就已经重置成新的密码了。编辑my.cnf,去掉刚才添加的内容,然后重启MySQL。大功告成!
下面说下外网链接mysql问题
使用navicate远程连接数据库出现1045 access denied for user ‘root’@‘localhost’ using password yes
在mysql命令行中执行
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
GRANT ALL PRIVILEGES ON *.* TO 'root' @'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
若以上方法行不通则用:
use mysql;
UPDATE user SET Password=PASSWORD('123456') where USER='root';
flush privileges;
第一个方法解决了我的问题