一、下载指引
首先我们需要去官网下载一个MySQL压缩包,将其解压到我们想要安装的目录之下,下载地址为:https://www.mysql.com/downloads
如果需要下载历史版本,可以在上图中的Archives中进行选择
二、远程连接(Mac用户)
之前在Linux安装JDK及Tomcat中,我们是使用的VMware的虚拟机来进行介绍的,其中借助了SecureCRT工具来完成远程连接服务器以及安装文件的上传功能,这次我们来使用阿里云服务器来进行介绍。
如果在Windows电脑环境下,我们依旧可以借助SecureCRT来进行远程连接服务器,并进行文件的上传;如果在Mac电脑的环境下,那么我们是可以直接来进行远程连接服务器,并进行上传文件的,如下:
ssh root@127.0.0.1 #127.0.0.1替换为远程服务器IP地址
在输入完密码后即可远程到远程服务器中,这里我们也可以通过Mac终端的Shell菜单中的新建远程连接来进行操作
这里如果我们新建了多个远程连接,那么在最下面的下拉框中就会看到多个历史记录,如果我们想清理其中的历史记录,那么可以执行下面的命令是否列出了你的所有远程连接历史记录
defaults read /Users/用户名/Library/Preferences/com.apple.Terminal.plist PreviousCommands
如果是的话,可以运行下面的命令删除,然后退出终端,需要注意是退出而不是关闭所有窗口
defaults delete /Userls/用户名/Library/Preferences/com.apple.Terminal.plist PreviousCommands
也可以使用open /User/...
命令直接在访达中打开上述路径下的文件,进行编辑,删除其中部分不想要的历史记录,然后再进行保存退出终端重新打开即可
三、上传文件(Mac用户)
上面我们介绍了Mac电脑环境下如何远程连接服务器,那么在Mac电脑如何将文件上次至服务器,这里我们需要借助scp命令,如下:
scp /home/a.txt root@www.xxx.com[网址或IP地址]:/usr/local/src # 将本机文件复制到远程服务器上
scp root@www.xxx.com[网址或IP地址]:/usr/src/a.txt /home/src # 将远程服务器上的文件复制到本机
四、安装及配置
- 解压安装包
# .tar文件 tar -xvf xxx.tar #解压 tar -cvf xxx #压缩 # .tar.xz文件 xz -d xxx.tar.xz #解压,解压之后是.tar文件 xz -z xxx.tar #压缩 # .tar.gz文件 tar -zxvf xxx.tar.gz #解压,解压之后是文件夹 tar -zcvf xxx #压缩 -z #使用gzip解压 -x #解压文档 -c #创建新文档,就是代表压缩的意思 -v #详细输出模式 -f #使用归档文件
-
移动并重命名
-
创建mysql用a户组和mysql用户
-
将安装目录所有者及所属组改为mysql
-
进入安装目录创建data文件夹,用于存放数据
-
配置
my.cnf
文件
在my.cnf
文件中,配置如下信息,输入:wq
进行保存[client] port=3306 socket=/tmp/mysql.sock default-character-set=utf8mb4 [mysqld] #设置mysql管理用户 user=mysql #设置3306端口号 port=3306 #启动的socket文件 socket=/tmp/mysql.sock #设置mysql的安装目录 basedir=/usr/local/mysql #设置mysql数据库的数据存放目录 datadir=/usr/local/mysql/data #错误日志文件路径 log-error=/var/log/mysqld.log #pid文件路径 pid-file=/var/run/mysqld/mysqld.pid #允许最大连接数 max_connections=200 #设置utf8mb4字符集 character-set-server=utf8mb4 character-set-client-handshake=FALSE collation-server=utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' #创建新表时将使用的默认存储引擎 default-storage-engine=INNODB #设置数据库表名大小写,不可以动态修改,必须重启数据库。0-表名存储为给定的大小和比较是区分大小写的;1-表名存储在磁盘是小写的,但是比较的时候是不区分大小写;2-表名存储为给定的大小写但是比较的时候是小写的 lower_case_table_names=1 #mysql5.6.6弃用了explicit_defaults_for_timestamp这个系统变量,高于5.6.6时要设置此变量不然timestamp默认值会报错Invalid default value explicit_defaults_for_timestamp=true #mysql5.7对group by语法更严格了,只能select分组的字段和聚合函数,其他字段不允许出现在select列中,如果不想线上报错需要写此语句 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION #Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
PS:在vim编辑过程中,如果发现中文乱码现象,可在用户目录下创建.vimrc文件,加入如下内容保存即可,其中fileencodings中utf-8要写在前面
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set fileformats=unix
set encoding=prc
- 初始化数据库
/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
然后根据上述的错误提示信息发现是我们在/etc/my.cnf
配置的错误日志文件路径导致的,所以这里新建一个日志文件,并更改其目录权限,然后再重新执行上述命令即可
PS: 如果在初始化数据库过程中发生相关依赖错误,可尝试执行cd /var/log/ vim mysqld.log :wq chown mysql:mysql mysqld.log
yum install libaio
命令来安装相关依赖包
-
查看初始密码
初始化成功后,从上述的my.cnf
配置文件中配置的log-error路径即可查看到初始化密码
-
添加开机启动,把启动脚本放到开机初始化目录
将mysql.server
复制到/etc/init.d
目录下,并重命名为mysqldcp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql chmod +x /etc/init.d/mysql
然后执行chkconfig --add mysql将其添加到服务中,可通过chkconfig --list mysql检查服务是否生效
上述看到mysql的服务,并且3、4、5都是"on"的状态,如果是状态为"off",则可执行chkconfig --level 345 mysql on
- 启动mysql服务
执行service mysql start
启动mysql
然后我们又发现上述的错误提示,这里其实和我们在第7步初始化数据库报错的原因一致,因为我们在/etc/my.cnf
配置的pid文件目录mysql用户没有权限的原因,需新建mysqld.pid
文件,并修改其目录权限
这里如何觉得太过于繁琐的话,可以在cd /var/run/ mkdir mysqld chown -R mysql:mysql mysqld/
my.cnf
将log-error
及pid-file
文件路径都配置在/usr/local/mysql/data
下,因为我们在创建mysql用户时,就直接修改过/usr/local/mysql
目录的权限,这样的话本步及第7步就都不会报错了。
#启动 service mysqld start #停止 service mysqld stop #重启 service mysqld restart
- 配置全局环境变量
执行vim /etc/profile
修改配置环境,如上添加mysql配置,ESC退出后:wq
保存,最后执行source /etc/profile
即可
- 更改root密码
首先需要使用上述得到的初始密码来登录mysql
在MySQL8前,可以执行如下命令进行修改密码
但是MySQL8开始,这样默认是不行的。因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。所以需要使用以下的方法去修改root密码set password = password('新密码'); alter user 'root'@'localhost' password expire never; flush privileges;
alter user 'root'@'localhost' identified with mysql_native_password by '新密码'; FLUSH PRIVILEGES;
五、远程连接
在上述安装完成之后,我们在本地使用Navicat进行测试连接时,这时可能会发生如下错误
因为这里使用的是阿里云服务器,首先需要确认的是3306端口是不是对外开放了,其默认状态是不开放对外访问的,所以首先需要配置阿里云服务器的安全组规则
如果这里你使用的是VMware虚拟机的话,那么可以使用firewall-cmd --list-ports
命令来检查一下3306端口是否开放
若无的话,可执行firewall-cmd --zone=public --add-port=3306/tcp --permanent
开启3306端口号,开启后重启防火墙firewall-cmd --reload
即可
停止防火墙:systemctl stop firewalld.service
禁止防火墙自启动:systemctl disable firewalld.service
启动防火墙:systemctl start firewalld.service
3306端口开放后再进行尝试连接测试库,可能又会发现如下错误
这里需要在服务器上先执行mysql -uroot -p
登录mysql,然后执行下面命令即可
#访问mysql库
use mysql
#使root能再任何host访问
update user set host = '%' where user = 'root';
#刷新
flush privileges;