在CentOs下安装Mysql8非常简单,只需要下载、安装、配置自动启动这三个步骤即可。配置自动启动是可选项,一般来说都需要设置自动启动。
笔者使用的是xx云服务器厂商的轻量应用服务器。内置了兼容CentOS8系统的Linux操作系统。在安装时找不到CentOS8,所以笔者就安装此系统将他当作CentOS8使用。
找到对应系统的安装包的下载链接后,可通过shell工具上传,也可直接在linux端使用wget命令直接下载至指定目录。
打开mysql官网点击头部导航中的Downloads栏打开下载界面。
点击MySQL Community (GPL) Downloads »进入Mysql社区版的下载界面
今天我们要安装的是Mysql服务器,所以选择列表中的 MySQL Community Server 项目
这里我的系统为x86的64位的linux系统。所以选择Linux - Generic后选择列表中的第一项进行下载
点击右侧的download按钮进入下载登录页,后选择底部的 No thanks, just start my download.链接进行下载。
注:此时下载的包会在你的电脑中,可自行选择shell工具进行上传,也可从浏览器中提取下载地址后在linux使用wget命令直接下载至linux端中。
这里提供笔者的下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz
在linux中直接下载使用wget命令,可将安装包下载至当前目录。
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz
安装主要将刚下载的安装包进行解压、然后配置环境变量让linux可以直接执行命令、最后初始化数据库并修改初始账号的密码后就能正常使用啦。
按照上面下载的步骤将安装包放到我们要安装的机器上后,使用tar命令将他解压至/usr/local目录中,并修改解压后的目录名称。
因为在后面要运行的脚本中,默认都指定安装目录是/usr/local/mysql这个位置,为了不必要的麻烦,我们就直接安装在这了。
# 解压至指定目录。这里需要注意。笔者的安装包是这个,各位读者需要自己注意安装包名称是否一致。
# 这里不展开说明tar命令了。各位同好有兴趣自己浏览。
tar -zvxf mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz -C /usr/local
# 修改mysql目录名称。
mv /usr/local/mysql-8.0.33-linux-glibc2.28-x86_64 /usr/local/mysql
前面都没问题的话就可以修改环境变量并初始化数据库了。
# 使用vim命令打开环境变量配置文件
vim /etc/profile
# 按PageDown键,将光标移动到文件最后端键入下面两行内容。
# 按i键进入编辑文档模式。即可输入内容。
export MYSQL_HOME=/usr/local/mysql # 这里笔者的目录是这个,如果改了安装目录的需自行修改。
export PATH=$PATH:MYSQL_HOME/bin; # 将二进制执行路径拼接到原path后方。
# 按键盘的Esc键退出编辑模式,并直接输入两个大写的字母Z,即可退出并保存该文件。
# 然后使用source命令重新加载此配置文件使配置生效。
source /etc/profile
这时我们就可以使用mysql的bin目录中的二进制命令了。
按照上面的教程配置好后,使用mysqld --initialize对数据库进行初始化,这时他会给一个默认的账号密码。我们可以对该账号的密码进行修改。后续就可以通过此账号密码使用数据库了。
# 使用mysqld命令初始化数据库。 mysqld命令的路径已经被包含在环境配置中的PATH路径上了。所以这里可以直接执行。
mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
# 下面是输出内容
2023-05-29T03:49:56.481868Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.33) initializing of server in progress as process 39315
2023-05-29T03:49:56.489884Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-05-29T03:49:57.417576Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-05-29T03:49:59.479434Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 06A+0Rau9neo
可以看到默认账号为root,默认密码为06A+0Rau9neo
# 进入数据库中的support-files目录
cd /usr/local/mysql/support-files/
# 使用mysql.server start 命令启动mysql服务
./mysql.server start
# 这时一般会看到以下报错。
# Starting MySQL.Logging to '/usr/local/mysql/data/VM-12-5-xxx.err'.
# ERROR! The server quit without updating PID file (/usr/local/mysql/data/VM-12-5-opencloudos.pid).
# 这是由于mysql服务器启动失败导致的。我们需要修改一下这个文件,让他可以正常启动mysql服务。
vim /usr/local/mysql/support-files/mysql.server
# 在vim中 set nu打开行号显示
:set nu
# 找到 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null & wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$? 这句话。笔者这里是266行的位置,读者需要自己在266行附近寻找
# 这句命令会使用mysqld_safe来启动mysql服务,但如果使用root账号使用这个服务需要增加一个启动用户的参数。我们这里正巧使用的是root账号。所以对他进行如下修改。
# 使用i键进入输入模式,在$bindir/mysqld_safe 后方,--datadir="$datadir"前方增加 --user=root这个参数如:$bindir/mysqld_safe --user=root --datadir="$datadir"
# 修改好后按ESC键退出编辑模式,输入两个大写的Z字母退出并保存。
# 然后我们再次启动服务。这次我们可以看到启动成功。
./mysql.server start
# Starting MySQL.Logging to '/usr/local/mysql/data/VM-12-5-opencloudos.err'.
# SUCCESS!
此时我们就可以用刚刚初始化时系统提供的账号密码进行登录。
mysql -u root -p
# 输入你的默认密码,笔者这里是06A+0Rau9neo,密码输入正确后会看到以下信息
# Enter password:
# Welcome to the MySQL monitor. Commands end with ; or \g.
# Your MySQL connection id is 8
# Server version: 8.0.33
# Copyright (c) 2000, 2023, Oracle and/or its affiliates.
# Oracle is a registered trademark of Oracle Corporation and/or its
# affiliates. Other names may be trademarks of their respective
# owners.
# Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# mysql>
# 由于给的默认密码太随机,根本记不住。所以我们需要给他改一个正常的密码。
alter user 'root'@'localhost' identified by 'root';
# 语法没问题就可以看见 Query OK, 0 rows affected (0.01 sec)。
# 这时我们使用exit命令退出数据库并重新使用新密码链接。发现已经可以正常使用。
exit
mysql -u root -p
如果此时服务器突然宕机,那么重启后是不会自动启动我们的mysql服务的。为了避免每次都需要手动启动,可以给他配置一个自启项。
# 将mysql启动文件丢到init.d目录中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 配置mysql自启
chkconfig --add mysqld
chkconfig mysqld on
基于以上的配置,mysql基本的部署算是完成了,如果开发者需要方便调试,那么可以给服务器配置一个账号,以达到远程访问调试mysql的目的。
配置本机访问远程服务器上的mysql服务总共就2个步骤:1. 关闭防火墙对mysql端口的限制 2. 在服务器上修改或创建一个可以支持远程访问的账号
如果没有对mysql的默认端口做修改,一般默认为3306,如果读者修改了端口号则需要将3306替换为自己的端口号。
# 防火墙开放3306端口的tcp连接
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙后生效
firewall-cmd --reload
将防火墙关闭后,此时本机可以对服务器上的3306端口进行数据收发了。不过有些云服务器的防火墙需要在云服务器的控制面板处进行关闭。
因为mysql默认的给账号都只能支持本地连接,所以这步有两个选项:1. 将原本的root账号从仅支持本地访问修改为支持远程访问。 2. 创建一个支持远程访问的账号,并且将数据库权限赋予该账号。
# 使用mysql命令连上数据库后
mysql -u root -p
# 创建账号 username 就是自定的账号名 % 指的是所有地址 123456就是密码,读者根据自己的需要修改。
create user 'username'@'%' identified by '123456';
-- 授予操作增删改,这个例子授予的是test库中的所有表(也可指定某一张表的权限),授予账号为 所有地址的username账号(即为我们刚刚创建的账号)。
GRANT SELECT, UPDATE, DELETE, INSERT ON test.* TO 'username'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
update user set Host='%' where User='root'; -- % 指的是所有地址。
FLUSH PRIVILEGES; -- 刷新权限
笔者本机是windows10系统,并且已经安装mysql。那么打开控制台正常连接mysql时增加-h参数指定远程服务器主机地址即可。
# 这里需要将*.*.*.*修改为读者自己的远程服务器主机地址
mysql -u test -h *.*.*.* -p