今天是2022年4月6日。
在当前时间上,mysql目前最新的版本是MySQL 8.0.28,在地址可见:MySQL :: Download MySQL Community Server https://dev.mysql.com/downloads/mysql/ ,如图:
而mysql的上一个大的版本是5.7,它的截止版本是mysql 5.7.36(在上一个链接上,选择“Archives”可见之前的mysql的历史版本),在如下图:
然后点击下载按钮。
1.1 然后将下载的文件,通过WinSCP或者Xftp 7等软件上传到/usr/local文件夹下,如图:
1.2 使用root【建议使用root账号】 账号登录到linux系统上 ,并用【cd /usr/local】切换到目录下,并用【ls】,如图:
1.3 使用【md5sum 文件名】查看该mysql的md5的编号是否与官方一致(不一致请判断下是否正确下载或者正确上传。),如图:
1.4 创建mysql组和mysql用户,命令如下:
groupadd mysql --创建mysql的group
useradd -r -g mysql mysql --在mysql的group创建一个叫mysql的用户
2.1 在/usr/local目录下,执行【tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz 】命令,如图:
等执行完毕后,使用【ls】命令可见解压后的文件夹,如:
将解压后的文件夹,重命名为mysql-5.7.36,执行【 mv mysql-5.7.36-linux-glibc2.12-x86_64 mysql-5.7.36】,如图:
2.2 在当前目录(/usr/local/mysql-5.7.36/)下,创建为data的目录,命令如下:
mkdir /usr/local/mysql-5.7.36/data
或者
mkdir data -- 因为当前目录为/usr/local/mysql-5.7.36/
-- 假如创建的目录是多层的目录的话,那么需要再加一个参数上去,比如:
-- mkdir -p /usr/local/mysql-5.7.36/data/mysql --才能级联创建多层目录
同时并将该目录授权于指定的用户和用户组的,命令如下:
chown mysql:mysql /usr/local/mysql-5.7.36/data
或者
chown mysql:mysql ./data -- 这【./】代表当前目录,当前目录为/usr/local/mysql-5.7.36/,也可以不加【./】。
-- 如果有多级目录的话,如上面举例的:mkdir -p /usr/local/mysql-5.7.36/data/mysql,那么这里的命令如下:
-- chown -R mysql:mysql /usr/local/mysql-5.7.36/data/mysql
提示:
chown [选项]... [所有者][:[组]] 文件...
命令功能:通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
用到的参数:
-R 处理指定目录以及其子目录下的所有文件
2.3 修改my.cnf的参数,执行【vim /etc/my.cnf】,如图:
修改为,如下图:
相关的代码,如下:
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql-5.7.36
datadir=/usr/local/mysql-5.7.36/data/
socket=/tmp/mysql.sock
log-error=/usr/local/mysql-5.7.36/data/mysql.err
pid-file=/usr/local/mysql-5.7.36/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
2.4 切换到/usr/local/mysql-5.7.36/bin目录下,并执行【./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-5.7.36/ --datadir=/usr/local/mysql-5.7.36/data/ --user=mysql --initialize】命令,却发现有报错,如图:
该错误是由于没有安装libaio造成。
2.5 安装libaio。执行【yum install -y libaio】,如图:
然后再执行【yum -y install numactl】命令,如图:
2.6 再次执行【./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-5.7.36/ --datadir=/usr/local/mysql-5.7.36/data/ --user=mysql --initialize】,当前目录是在/usr/local/mysql-5.7.36/bin目录下,如图:
2.8 执行【cp /usr/local/mysql-5.7.36/support-files/mysql.server /etc/init.d/mysql】,如图:
2.7 执行 【cat /usr/local/mysql-5.7.36/data/mysql.err】命令查看密码并复制,如图:
2.8 启动mysql的服务,执行【service mysql start】命令,如图:
以下命令:
service mysql start -- mysql启动
service mysql stop -- mysql关闭
service mysql restart -- mysql重启
service mysql status -- 查看mysql状态
提示:
以下几种命令都可以查看mysql当前进程:
pgrep mysql
或者
service mysql status
或者
ps -ef | grep mysql --这种最详细
2.9 现在开始登陆mysql服务端,先将密码复制下,在/usr/local/mysql-5.7.36/bin目录下输入【./mysql -uroot -p】,如图:
然后修改当前用户密码,执行【set password='你要输入的密码';flush privileges;】命令,如图:
2.10 此时mysql 已经启动并登陆数据库服务成功。
3.1 我们倘若想在任何目录下都可以使用【mysql -uroot -p】命令登陆mysql,那么此时在linux任何某个目录是否可以吗?如图:
那么如何解决呢?
3.2 那么接下来就是授权以及添加服务,如图:
命令:
chmod +x /etc/init.d/mysql
chkconfig --add mysql
3.3 将mysql命令添加到服务【ln -s /usr/local/mysql-5.7.36/bin/mysql /usr/bin】,如图:
此时理论上应该已经可以。
信不信呢?
我们下一步来验证下。
3.4 切换到任何一个目录下,使用 【mysql -uroot -p】命令是否能登陆mysql。如:
此时果然能登陆成功。
4.1 此时打开cmd命令,输入【telnet 你的mysql安装的IP 3306】,如图:
目前无法访问该linux系统上的3306端口,那么如何解决呢?
4.2 首先登陆mysql【mysql -uroot -p】,登陆后,输入【select host,user from mysql.user;】,如图:
root用户对应的host是localhost,这代表只能本地可以访问该数据库。
因此默认mysql的用户是没有远程访问的权限的,因此当外面的程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限。
主要有两种方式,改表法和授权法。
以下分别将这两种方法都罗列出来。
1).改表法
那么只需要修改mysql库的user表,将host项,从localhost改为%。%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip,比如可以将localhost改为192.168.1.10,这表示只允许局域网的192.168.1.10这个ip远程访问mysql。
update mysql.user set host = '%' where user = 'root';
flush privileges; -- 刷新下权限,使之有效
如图:
2).授权法
输入【grant all privileges on *.* to 'root'@'%' IDENTIFIED BY 'root123456' with grant option;】命令,如图
代码如下:
grant all privileges on *.* to 'root'@'%' IDENTIFIED BY 'root123456' with grant option;
以下是解释:
授权格式:
grant 权限1[,权限2.权限n] on 数据库.表 to ‘用户名’@‘允许的ip地址’ IDENTIFIED BY '用户名相应的密码'
all privileges:代表所有权限。
*.* :代表所有数据库的所有表。
'root'@'%' : 用户名是root,对应的ip地址是任意的。也可以写成'root' ,因为默认的就是@'%'。
with grant option:这个是在all privileges权限上在赋予更高一层的权限,可以有权限授权或取消权限于其他用户。
以上两种方法,任意一种即可(笔者相对于来说推荐第二种)。
下面是开通防火墙
4.3 打开防火墙配置文件,代码如下【vim /etc/sysconfig/iptables】,
然后在里面增加一行【-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT】,同时这行代码必须在【icmp-host-prohibited】之前。如图:
4.4 重启防火墙 ,输入【service network restart】,再次打开cmd窗口,输入【telnet 你的mysql安装的IP 3306】,会进入如下图所示:
此时已经可以远程连接上你安装好的linux下的mysql服务器。
此时用Navicat for mysql 软件建立连接测试,如图:
好,恭喜你,到这里,你的mysql已经安装成功了,同时也能远程连接的上。
理论上来说,任何一个mysql版本都可以按照以上的步骤一步步来,都能安装成功。