1、Linux之Mysql离线安装
1、查看是否已安装:rpm -qa | grep mysql
2、官网下载tar.gz
- 官网下载地址
- 当前下载mysql5.7,选5.7.20、Linux-Generic、all
- 确认下载32bit还是64bit的
3、上传到服务器后解压
# 解压文件至/usr/local/目录
tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
# 重命名为 mysql
mv /usr/local/mysql-5.7.20-linux-glibc2.12-x86_64//usr/local/mysql
4、创建用户组
groupadd mysql #创建用户组
# -r 参数表示 mysql 用户是系统用户,不可用于登录系统,创建用户 mysql 并将其添加到用户组 mysql 中
useradd -r -g mysql mysql
#分配用户组
chown -R mysql /usr/local/mysql/ # 将文件的所有属性改为 mysql 用户
chgrp -R mysql /usr/local/mysql/ # 将组属性改为 mysql 组
- 为什么要创建用户和组可以看看这篇
MySQL 开在 root 上意味着它可以在系统的任何位置写任何文件,MySQL 开在 mysql 用户上,保证它对系统大部分位置不可写,从而 MySQL 即使被攻击,也可以限制它对整个系统的影响。
当让MySQL运行的时候使用一个独立的账号和用户组时,该用户和用户组权限是可以控制的。当系统中文件的权限未设定给Mysql用户以及用户组时,Mysql用户无法进行读写执行操作。而如果MySQL被黑了,可以通那么开始拿到的权限就是那个创建的账号而不是默认的root,我们在编译安装的时候创建一个mysql组和一个mysql用户,并把datadir和安装目录属主改为mysql。
在MySQL启动的时候,单进程mysqld,该进程的属主就是mysql,这样就保证了mysql服务的独立性,即使mysql服务被黑掉,得到了mysql用户权限,也不会影响整个系统的安全。
作者:ytAnck
链接:https://juejin.cn/post/7303546495777046537
来源:稀土掘金
5.创建数据目录并赋予权限
mkdir -p /data/mysql #数据目录
chown mysql:mysql -R/data/mysql
6.修改配置文件 vim /etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
7.初始化数据库
参数: --basedir 为mysql解压目录,–datadir 为mysql数据存放目录。(注意安装路径是否一致
cd /usr/local/mysql/bin/
#查看初始密码,一般最后一行root@locallhost:后面的就是密码
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/--datadir=/data/mysql/--user=mysql --initialize
#查看初始密码,一般最后一行root@locallhost:后面的就是密码
cat /data/mysql/mysql.err
注:在初始化数据库时可能报缺少xx动态库的错误
如:error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
#第1步:查看是否安装了libaio,无返回则说明未安装,执行步骤2
rpm -qa|grep libaio
#第2步:切换到root用户,使用命令yum install -y libaio进行安装
8. 加入到系统服务并启动mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
service mysql start
#登录mysql,一定要开启服务后才能登陆
/usr/local/mysql/bin/mysql -u root -p
./mysql -u root -p
# 登录成功后会提示你重置密码
# 修改密码,SQL语句后面的分号不能丢
ALTERUSER'root'@'localhost' IDENTIFIEDBY 'uacsapp';FLUSHPRIVILEGES; #刷新
# 退出 quit
# 重启服务 service mysql restart
# 再次登陆 /usr/local/mysql/bin/mysql -u root -p //输入刚修改的密码1234敲回车键
# 到此mysql已经安装完成了
在用工具连接mysql时提示:
MySQL 异常: "Host 'xxx' is not allowed to connect to this MySQL server"
解决:
登录mysql,刷新规则允许外部访问
host修改成%表示,所有主机都可以通过root用户访问数据库
use mysql #选择访问mysql库
update user set host ='%' where user ='root'; #使root能再任何host访问
FLUSHPRIVILEGES; #刷新
参考链接
2、linux关闭防火墙命令(一般使用方法二即可)
方法一:
- 使用命令
service iptables stop
停止防火墙服务。 - 使用命令
chkconfig iptables off
禁止防火墙在系统启动时自动启动。
方法二:
- 使用命令
systemctl stop firewalld
停止Firewalld服务。 - 使用命令
systemctl disable firewalld
禁止Firewalld在系统启动时自动启动。
方法三:
- 使用命令
iptables -F
清空防火墙规则。 - 使用命令
iptables -X
删除所有用户自定义链。 - 使用命令
iptables -Z
将所有计数器归零。
方法四:
- 使用命令
ufw disable
禁用Uncomplicated Firewall(如果已经安装)。
3、linux下设置mysql开机自启动
linux开机自启动的服务都存在这个
/etc/rc.d/init.d/
文件夹下面,开机的时候会自动去启动该文件下的服务,那么到这里事情就简单了,我们只需要把mysql的启动服务copy过来即可。
#copy并重命名
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
#复制成功后我们需要给赋予权限
chmod +x /etc/init.d/mysql
#添加为服务:
chkconfig --add mysql
#查看服务列表
chkconfig --list
#看到mysql服务的3、4、5状态为开或者为 on 则表示成功。 如果是 关或者 off 则执行一下:
chkconfig --level 345 mysqld on
#重启计算机:
reboot
版权归原作者 小僵123456 所有, 如有侵权,请联系我们删除。