1、解压安装包
cd /home/hadoop/software
tar -xvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz ../setup/
2、创建软链接
ln -s mysql-5.7.24-linux-glibc2.12-x86_64 mysql5.7
3、创建文件夹,删除以前的配置
mkdir -p /home/hadoop/data/mysql/3306
mkdir -p /home/hadoop/tmp/mysql/3306
mkdir -p /home/hadoop/logs/mysql/3306
rm -rf /home/hadoop/data/mysql/3306/*
rm -rf /home/hadoop/data/mysql/*.sock
rm -rf /home/hadoop/data/mysql/*.lock
rm -rf /home/hadoop/logs/mysql/3306/*.log
4、生成配置文件
- vim /home/hadoop/shell/mysql/my-3306.cnf
[client]
#设置mysql客户端连接端口
port=3306
# 为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
socket=/home/hadoop/data/mysql/mysql-3306.sock
#设置客户端编码
default-character-set=utf8
[mysqld]
# 为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
socket=/home/hadoop/data/mysql/mysql-3306.sock
# 设置mysql服务端口
port = 3306 #默认是3306,这里发现3306已经被占用,因此防止这种情况发生,可以避免使用3306mysql默认端口
# set设置mysql安装目录
basedir=/home/hadoop/software/mysql5.7
# 设置数据目录
datadir=/home/hadoop/data/mysql/3306
# 设置临时目录
tmpdir=/home/hadoop/tmp/mysql/3306
# 设置pid文件存放目录
pid-file=/home/hadoop/data/mysql/mysql-3306.pid
# set the number of allow max connnection
max_connections=200
# 设置服务端编码
character-set-server=utf8
# 存储引擎
default-storage-engine=INNODB
#ONLY_FULL_GROUP_BY ERROR_FOR_DIVISION_BY_ZERO
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
max_allowed_packet=16M
explicit_defaults_for_timestamp=true
user=hadoop
wait_timeout=31536000
interactive_timeout=31536000
log-error=/home/hadoop/logs/mysql/3306/error.log
[mysqld_safe]
# 为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
socket=/home/hadoop/data/mysql/mysql-3306.sock
# 设置mysql服务端口
port = 3306 #默认是3306,这里发现3306已经被占用,因此防止这种情况发生,可以避免使用3306mysql默认端口
# set设置mysql安装目录
basedir=/home/hadoop/software/mysql5.7
# 设置数据目录
datadir=/home/hadoop/data/mysql/3306
# 设置临时目录
tmpdir=/home/hadoop/tmp/mysql/3306
# 设置pid文件存放目录
pid-file=/home/hadoop/data/mysql/mysql-3306.pid
log-error=/home/hadoop/logs/mysql/3306/error.log
5、初始化 注意:--defaults-extra-file 这个参数必须放在第一位
/home/hadoop/software/mysql5.7/bin/mysqld_safe --defaults-extra-file=/home/hadoop/shell/mysql/my-3306.cnf --initialize --basedir=/home/hadoop/software/mysql5.7 --user=hadoop
# 成功后查看日志会有一个密码:A temporary password is generated for root@localhost: pJnVg%Ytg9EC
6、修改Root用户密码
- 方式一(推荐使用第一种)
# 正常启动
/home/hadoop/software/mysql5.7/bin/mysqld_safe --defaults-extra-file=/home/hadoop/shell/mysql/my-3306.cnf --user=hadoop &
# 使用密码登录root用户<密码为:pJnVg%Ytg9EC>
/home/hadoop/software/mysql5.7/bin/mysql --defaults-extra-file=/home/hadoop/shell/mysql/my-3306.cnf -uroot -p
# Sql脚本
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
# 使用密码登录root用户<密码为:root>
/home/hadoop/software/mysql5.7/bin/mysql --defaults-extra-file=/home/hadoop/shell/mysql/my-3306.cnf -uroot -proot
- 方式二
<待下次验证>
# 设置免密登陆启动
/home/hadoop/software/mysql5.7/bin/mysqld_safe --defaults-extra-file=/home/hadoop/shell/mysql/my-3306.cnf --user=hadoop --skip-grant-tables --skip-networking &
# 免密登陆root,然后修改root数据库用户密码<密码为:空,直接enter>
/home/hadoop/software/mysql5.7/bin/mysql --defaults-extra-file=/home/hadoop/shell/mysql/my-3306.cnf -uroot -p
# 更新密码
update mysql.user set authentication_string=password('root1') where user='root';
# 去掉免密登陆限制重启
/home/hadoop/software/mysql5.7/bin/mysqld_safe --defaults-extra-file=/home/hadoop/shell/mysql/my-3306.cnf --user=hadoop &
# 最后再用alter修改密码 <update和alter顺序不能错,否则会报错>
/home/hadoop/software/mysql5.7/bin/mysql --defaults-extra-file=/home/hadoop/shell/mysql/my-3306.cnf -uroot -p
alter user 'root'@'localhost' identified by 'root';
7、启停脚本
- vim startMysql.sh 【编辑脚本】
/home/hadoop/software/mysql5.7/bin/mysqld_safe --defaults-extra-file=/home/hadoop/shell/mysql/my-3306.cnf --user=hadoop --datadir=/home/hadoop/data/mysql/3306 &
- chmod +x startMysql.sh 【可执行权限】
- ./startMysql.sh 【启动】
8、创建mysql数据库用户,密码为mysql
/home/hadoop/software/mysql5.7/bin/mysql --defaults-extra-file=/home/hadoop/shell/mysql/my-3306.cnf -uroot -p
select user,authentication_string,plugin,host from mysql.user;
create user mysql identified by 'mysql';
9、设置远程访问<CentOS需要查看防火墙是否限制端口访问>
/home/hadoop/software/mysql5.7/bin/mysql -uroot -p --socket=/home/hadoop/data/mysql/mysql-3306.sock
# 不会生成mysql@%的记录(前面第8步的identified by已经生成)
grant all privileges on *.* to mysql@"%" with grant option;
# root用户远程登录,会自动生成一条root@%的记录
grant all privileges on *.* to root@"%" IDENTIFIED BY 'root' with grant option;
flush privileges;
10、使用mysql数据库用户登陆
/home/hadoop/software/mysql5.7/bin/mysql -umysql -p --socket=/home/hadoop/data/mysql/mysql-3306.sock