目录
1.1 把下载的mysql5.7.20放到目录:/usr/local/
1 安装mysql5.7.20
首先声明一点,mysql5.7.20和之前的5.7.16版本不同,解压后没有data文件,需要自己建立
1.1 把下载的mysql5.7.20放到目录:/usr/local/
1.2 卸载cenos上预装的mysql
查看已安装:
[root@hadoop /]#rpm -qa|grep -i mysql
mysql-libs-5.1.71-1.el6.x86_64
卸载预安装:
[root@hadoop /]#rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
再次查看查不出来说明没有预装:
[root@hadoop /]# rpm -qa|grep-i mysql
1.3 解压压缩包
在linux /usr/local/中解压mysql压缩包改名为mysql,并在解压后的文件里面创建文件夹data
切换到目标路径:
cd /usr/local/
解压mysql包:
tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
重命名:
mv mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz mysql
cd /usr/local/mysql
创建数据库文件夹data:
mkdir data
1.4 创建用户组以及用户
创建用户组mysql,创建用户mysql并将其添加到用户组mysql中,并赋予读写权限
groupadd mysql --创建mysql用户组组
useradd -r -g mysql mysql --创建mysql用户并添加到mysql用户组中
chown -R mysql mysql/ --将mysql目录访问权限赋为myql用户
chgrp -R mysql mysql/ --改变mysql目录的用户组属于mysql组
1.5 创建配置文件保存并退出
创建配置文件: vim /etc/my.cnf
在mysql文件夹下创建配置文件夹data(很重要): mkdir data
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 服务端使用的字符集默认为 UTF8
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!
注意,报错:
- 报错一:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
由于配置文件socket的位置不是/tmp/mysql.sock,只需修改为/tmp/mysql.sock即可 - 报错二:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
在[mysqld]下添加skip-grant-tables,保存即可(登录时跳过权限检查) - 报错三:Plugin mysqlx reported: 'Setup of socket: '/tmp/mysqlx.sock' failed, can't open lock file /tmp/mysqlx.sock.lock'
直接把socket指定的目录下的以mysql打头的文件给删除掉
1.6 初始化数据库并查看初始密码
#先安装一下这个,要不然初始化有可能会报错
yum install libaio
#手动编辑一下日志文件,什么也不用写,直接保存退出
cd /var/log/
vim mysqld.log
:wq
chmod 命令:用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。
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
#查看初始密码
cat /var/log/mysqld.log
执行后关注最后一点:root@localhost: 这里就是初始密码
1.7 启动服务,进入mysql,修改初始密码
#一些必须的基本操作
cd /var/run/
mkdir mysqld
chmod 777 mysqld
cd mysqld
vim mysqld.pid
chmod 777 mysqld.pid
chown mysql:mysql mysqld.pid
#在mysql的support-files文件夹下执行
cd /usr/local/mysql/support-files
#启动服务
./mysql.server start
登录服务
cd /usr/local/mysql/bin
./mysql -u root -p 注意:在此处直接回车,然后输入临时密码
修改密码:set password=password("root");
注意:用NAT模式的网络配置,可能不会被外部网络访问,因此,需要加入"%"授权,以便外部主机连接
登录授权:grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
授权生效:flush privileges;
此处是赋予权限命令详解:
注意:退出时,用exit命令就可以退出sql命令模式或者ctrl+c
mysql8 授权方法:
正确的写法是先创建用户
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
再给用户授权
grant all privileges on *.* to 'root'@'%' ;
授权生效
flush privileges;
1.8 开机自启
cd /usr/local/mysql/support-files/
cp mysql.server /etc/init.d/mysql
#将mysql目录填上:
vi /etc/init.d/mysql
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
授权:chmod +x /etc/init.d/mysql
设为开机启动:chkconfig --add mysqld(或者chkconfig --add mysql)
1.9 service启动
重启服务:service mysql restart
停止服务:service mysql stop
启动服务:service mysql start
查看服务:service mysql status
注意:以上命令也可以用mysqld来代替mysql
1.10 Linux系统内核优化
大多数MySQL都部署在linux系统上,所以操作系统的一些参数也会影响到MySQL性能,以下对linux内核进行适当优化
net.ipv4.tcp_fin_timeout = 30 #TIME_WAIT超时时间,默认是60s
net.ipv4.tcp_tw_reuse = 1
#1表示开启复用,允许TIME_WAIT socket重新用于新的TCP连接,0表示关闭
net.ipv4.tcp_tw_recycle = 1
#1表示开启TIME_WAIT socket快速回收,0表示关闭
net.ipv4.tcp_max_tw_buckets = 4096
#系统保持TIME_WAIT socket最大数量,如果超出这个数,系统将随机清除一些TIME_WAIT并打印警告信息
net.ipv4.tcp_max_syn_backlog = 4096
#进入SYN队列最大长度,加大队列长度可容纳更多的等待连接
在linux系统中,如果进程打开的文件句柄数量超过系统默认值1024,就会提示“too many files open”信息,所以要调整打开文件句柄限制。
vi /etc/security/limits.conf
#加入以下配置,*代表所有用户,也可以指定用户,重启系统生效
* soft nofile 65535* hard nofile 65535# ulimit -SHn 65535 #立刻生效
2 彻底卸载mysql5.7.20
2.1 卸载yum方式安装的mysql
使用yum安装的mysql,使用如下命令进行卸载(不能确定使用何种方式安装的mysql情况下,按后续步骤一一进行处理即可):
yum remove mysql mysql-server mysql-libs compat-mysql51
rm -rf /var/lib/mysq
rm /etc/my.cnf
2.2 卸载rpm方式安装的mysql
使用rpm方式安装的mysql,类似于windows中安装.exe文件,按如下步骤进行处理:
查看系统中是否以rpm包安装的mysql:
rpm -qa | grep -i mysql
使用rpm -e 命令将上个命令中包列表一一进行卸载。
2.3 删除mysql相关的服务
chkconfig --list | grep -i mysql
chkconfig --del mysql
2.4 找出OS中分散的mysql文件夹,并删除
find / -name mysql
最后清空mysql相关的的所有目录以及文件
rm -rf 。。