CenterOS7下 Mysql 5.7 tar.gz安装
安装新版mysql前,需将系统自带的mariadb-lib卸载
[root@hadoop01 ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@hadoop01 ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
[root@hadoop01 ~]# rpm -qa|grep mariadb
开始安装
解压安装包
tar -zxvf mysql-5.7.24-el7-x86_64.tar.gz
将该文件夹拷贝到/usr/local/下 并重命名为 mysql
mv mysql-5.7.24-el7-x86_64 /usr/local/mysql
在mysql57 下创建文件夹data(我们将该文件夹设置为端口3306实例的目录,为防备多实例的情况)
mkdir /usr/local/mysql/data
mkdir /usr/local/mysql/log
创建my.cnf 内容如下
[client]
socket=/data/mysql/mysql.sock
port=7395
[mysqld]
basedir=/data/mysql/
datadir=/data/mysql/data
socket=/data/mysql/mysql.sock
default-storage-engine=INNODB
character_set_server=utf8
port=7395
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/data/mysql/log/mysqlderror.log
pid-file=/data/mysql/data/mysql.pid
log_bin=mysql-bin
server_id=1
#STATEMENT,ROW,MIXED
binlog_format=ROW
## 最大连接数,MySQL服务器允许的最大连接数16384,连接数越多消耗内存越多
max_connections = 1000
## Enable Per Table Data for InnoDB to shrink ibdata1(innoDB表优化)
innodb_file_per_table = 1
## 日志过期时间,包括二进制日志(过期自动删除)
expire_logs_days = 15
#默认128M,用于存储页面缓存数据外,另外正常情况下还有大约8%的开销,主要用在每个缓存页帧的描述、adaptive hash等数据结构,适当的增加这个参数的大小,可以有效的减少 InnoDB 类型的表的磁盘 I/O
innodb_buffer_pool_size = 2048M
innodb_log_file_size = 512M
#默认是8MB,InnoDB在写事务日志的时候,为了提高性能,也是先将信息写入Innofb Log Buffer中,当满足innodb_flush_log_trx_commit参数所设置的相应条件(或者日志缓冲区写满)之后,才会将日志写到文件 (或者同步到磁盘)中
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
#表大小写不敏感
lower_case_table_names=1
#网络读写超时时间
net_read_timeout=28800
net_write_timeout=28800
skip-grant-tables
将my.cnf 放到/etc/下
mv my.cnf /etc/
创建一个mysql 用户
useradd -r -s /sbin/nologin mysql
给目录授权限
chown -R mysql:mysql /usr/local/mysql/
初始化数据库
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
如果默认配置文件不是/etc/my.cnf 则需要指定默认文件 比如配置文件是my3307.cnf 则初始化如下
./mysqld --defaults-file=/etc/my3309.cnf --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
启动mysql
./mysqld_safe --user=mysql&
如果有多实例 并且配置文件不是默认的/etc/my.cnf 则启动需要指定配置文件如下
./mysqld_safe --defaults-file=/etc/my3309.cnf --user=mysql&
检查是否启动
ps -ef|grep mysql
发现有mysql进程 即成功
设置登录密码
(1)修改/etc/my.cnf 添加skip-grant-tables
![](https://img.haomeiwen.com/i21637754/c47f2746da1780eb.png)
![](https://img.haomeiwen.com/i21637754/54c3ad411755fbe2.png)
sr/local/mysql/bin
source /etc/profile
(2)重启服务(先关闭后开启)
./mysqladmin shutdown
ps -ef |grep mysql
如果没有了进程则说明停止服务成功
重新开启
./mysqld_safe --user=mysql&
(3)登录并修改密码
mysql -u root
update mysql.user set authentication_string=password('123456') where user='root';
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
(4)把my.conf 中 skip-grant-tables 屏蔽
mysql5.7 需要再次登录上去:
使用alter user user() 再次设置下密码才可以, 到此 完成改密码操作
alter user user() identified by '123456';
设置远程登录密码
[root@hadoop01 mysql-5.7]# mysql -u root -p
新创建用户:goodhope
创建用户:
create user 'goodhope@localhost' identified by '123456';
create user 'goodhope@%' identified by '123456';
删除用户:
drop user 'goodhope@%'
或者可以直接创建授权远程用户(同上面创建用户 一样的效果):
格式
格式:grant privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD';
grant all privileges on *.* to 'goodhope'@'%' identified by '123456' with grant option;
# 刷新表
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 退出MySQL
mysql> quit;
Bye
关闭MySQL
设置开机自启动
1、添加服务mysql
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod a+x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
注意如果mysql并不是安装在默认/usr/local/mysql下面,或则congfig文件也不是默认的/etc/my.cnf 则需要进行指定 mysql的basedir= datadir=
![](https://img.haomeiwen.com/i21637754/15715d14376efa29.png)
2、设置mysql服务为自启动
systemctl enable mysql
或者
systemctl enable mysqld
注册服务后 启动 重启 关闭 查看状态指令分别是
systemctl start/restart/stop/status mysqld
特殊情况
注意:在centos7 下,如果mysql的有多个实例,并且/etc/my.cnf被别的实例给占用了,那么新增的实例是无法使用support-files/mysql.server注册成为服务的,如果要想开机启动要使用脚本模式方法如下
1.在bin目录下创建两个文件
vi mysql_start.sh
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3309.cnf --user=mysql&
vi mysql_stop.sh
/usr/local/mysql/bin/mysqladmin --socket=/usr/local/mysql/mysql.sock --port=3309 -u root -pGoodHope@US shutdown
chown mysql:mysql mysql_start.sh
chown mysql:mysql mysql_stop.sh
chmod 755 mysql_start.sh
chmod 755 mysql_stop.sh
2.编辑 /etc/rc.d/rc.local
/usr/local/mysql/bin/mysql_start.sh
chmod +x rc.local
重启进行查看判断