1. 下载mysql压缩包
本机是64位,直接用命令安装
msyql官网: https://dev.mysql.com/downloads/mysql/
去网站看下所需的版本,修改下列命令
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
2. 解压
解压命令:tar -zxvf mysql-xxx.tar.gz
复制解压后的mysql目录
cp -r mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/mysql
创建目录:/usr/local/mysql/data/mysql
授权目录:cd /usr/local/mysql/
命令 :chown -R mysql:mysql ./
3. 初始化mysql
执行: ./scripts/mysql_install_db --user=root --datadir=/usr/local/mysql/data/mysql
报错:-bash: ./scripts/mysql_install_db: No such file or directory
原因是:MySQL5.7没有scripts目录,不用管。
执行下列命令(在bin目录下执行)
初始化命令:/usr/local/mysql/bin/mysqld --initialize --user=root --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/mysql
会报错:mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
这个问题出现的原因是缺少libaio,使用命令yum install -y libaio进行安装
再次执行初始化命令
成功,初始化密码也出来了(初始密码要记住!!!稍后登录会用)
3. 设置加密连接
执行mysql_ssl_rsa_setup
-bash: mysql_ssl_rsa_setup: command not found
首先,进入cd /usr/bin
然后,ln -fs /usr/local/mysql/bin/mysql_ssl_rsa_setup /usr/bin
报错:
修改 /etc/my.cnf 文件
[mysqld]
#datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# add start 2017.12.4
datadir=/usr/local/mysql/data/mysql
basedir=/usr/local/mysql
user=root
character_set_server=utf8 #设置编码格式,否则出现中文乱码
# add end
# Settings user and group are ignored when systemd is used.
再次执行mysql_ssl_rsa_setup
4. 加入系统服务
将mysqld文件复制到/etc/init.d目录下
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
进入/etc/init.d目录并修改mysqld文件
添加下方两条数据
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data/mysql
如图所示 ↓
执行:
chkconfig mysqld on # 设置开机自启动
chkconfig --list | grep mysqld
5. 启动mysql服务
启动(start) 重启(restart) 停止(stop)
启动命令:service mysqld start
报错:
创建目录/var/log/mysql /var/run/mysql /var/lib/ mysql
ps:mariadb是MySQL的一个分支
再次开启服务,要是还出错就在log目录下再加一个mariadb的目录
6. 配置环境变量
使用命令 vim /etc/profile 进行环境变量的配置
划到最下面,添加一条:export PATH=$PATH:/usr/local/mysql/bin/
保存退出,使用命令“source /etc/profile”更新环境变量
使用命令“echo $PATH”查看环境变量是否配置完毕
7. 登录mysql
如果丢失临时密码,找回方法:
找到datadir目录进入,cd /usr/local/mysql/data/mysql/ 删除所有,重新初始化,生成新的临时密码。
登录命令:mysql -u root -p
输入临时密码完成登录
登录报错
解决办法:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
操作完成后再次登录
临时密码过于复杂,修改密码:
set password for 'root'@'localhost' =password('新密码');
//更改root密码的sql语句,root是新的root密码(别忘了结尾的;号)
退出,再次验证登录是否成功
8. 使用本地Navicat连接数据库
1)创建用户用来远程连接
GRANT ALL PRIVILEGES ON *.* TO 'devtest'@'%' IDENTIFIED BY 'devtest' WITH GRANT OPTION;
(第一个devtest表示用户名,%表示所有的电脑都可以连接,也可以设置某个ip地址运行连接,第二个devtest表示密码)。
2)刷新权限
执行 flush privileges; 立即生效
3)查询数据库用户
(看到用户创建成功了)
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
9. 开启防火墙端口
什么都不设置直接通过Navicat连,大概率是报错的
查看端口命令:netstat -an|grep 3306
先确定控制打开3306端口(),如果可以访问就OK。
如果不行:
centos7防火墙命令:
查看已经开放的端口:firewall-cmd --list-ports
防火墙没开启,开启防火墙:systemctl start firewalld.service
开启启动防火墙:systemctl enable firewalld.service
开启防火墙后开放端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
查看3306端口使用的什么协议:netstat -antp | grep 3306
查看已经开放的端口:firewall-cmd --list-ports
此命令执行后没有结果,应该是开启端口和开放端口意义不同,此处不需要开启,只要开放。
10.开启iptables
为了安全,不光有防火墙,往往还开启了iptables服务。
设置 iptables service: yum -y install iptables-services
要修改防火墙配置,如增加防火墙端口3306
vim /etc/sysconfig/iptables
增加规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存退出后
systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
Netfileter/iptables (以下简称iptables)是nuix/linux 系统自带的优秀且完全免费的基于包过滤的防火墙工具、它的功能十分强大、使用非常灵活、可以对流入、流出及流经服务器的数据包进行精细的控制。
最后重启系统使设置生效即可。
systemctl start iptables.service #打开防火墙
systemctl stop iptables.service #关闭防火墙
systemctl status iptables #查看当前运行情况
systemctl stop iptables #结束运行