阿里云ESC服务器Linux上安装配置MySql

网上查了一大堆教程,各种问题就不说了,各种不对,报错,用不了,还卸载了重新安装。
特此记录一下正确的安装过程,以供小伙伴们参考。

现在买的esc云服务器实例,默认安装了mariadb数据库,本质和mysql是一样的,但是我们需要卸载。

说明,我没有安装新的8.0版本,是安装的mysql5.7.26版本。

1、检查是否安装过mysql和mariadb 数据

检查mysql

rpm -qa | grep mysql

如有,显示类似如下

mysql-libs-5.1.52-1.el6_0.1.x86_64

选择卸载

rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

检查mariadb

rpm -qa | grep mariadb

有的话,显示类似

mariadb-libs-5.5.56-2.el7.x86_64

卸载

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

我在安装的时候,是没有mysql,但是有mariadb的。我只需要卸载后面的那个。

2、找一个地方,用来放置mysql的安装包,并且用来解压。
我是在/opt/mysql这个目录。在/opt目录下新建一个mysql目录。
这里,可以去官方下载二进制安装包后,通过xftp软件上传上来。
我这里,是直接在服务器上下载。
通过cd命令切换到/opt/mysql/目录下,执行下载mysql5.7.26

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

3、解压并移动

我第一次安装的时候,没有把msql放置到/usr/local目录,运行的时候,有错误,后来只能卸载了重新安装。这里,我还是推荐大家把解压后的文件移动到/usr/local目录下面。

解压

tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz 

移动

mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/

重命名

 mv mysql-5.7.26-linux-glibc2.12-x86_64/ mysql-5.7.26

这里,你也可以直接命名为mysql,或是和我一样,mysql-5.7.26这样,最好和我一样,涉及到后面配置路径等。

4、创建用户并赋予目录权限
检查mysql组和用户是否存在,如无创建

cat /etc/group | grep mysql
#类似
mysql:x:490:
cat /etc/passwd | grep mysql
#类似
mysql:x:496:490::/home/mysql:/bin/bash

如果类似上面这样的显示,说明已经有了。如果运行命令后,没有打印类似下面的这样的信息,说明是无。那我们就需要创建。
依次执行下面两条命令:

groupadd mysql
useradd -r -g mysql mysql

#useradd -r参数表示mysql用户是系统用户,不可用于登录系统

创建mysq数据目录

数据目录data,其实是可以创建在其他的地方,对应的后面的配置就需要修改。为了不想折腾,大家还是按照我写的这样的路径吧。

回到根目录,然后创建data文件夹,然后在data文件夹下新建一个mysql文件夹。

    cd /
    mkdir -p data
    cd data/
    mkdir -p mysql

赋予权限

chown mysql:mysql -R /data/mysql

5、配置参数
执行

 vim /etc/my.cnf

然后 按 i 进入编辑模式,把下面内容复制进去

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql-5.7.26
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

编辑完后 按esc 后按住 shift+: 输入 wq表示保存并退出 。

大家可以看到,这个配置文件夹内的文件路径,和我们上面的操作息息相关。这也是推荐大家尽量保持一样的原因。

6、初始化mysql

cd /usr/local/mysql-5.7.26/bin/
 ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-5.7.26/ --datadir=/data/mysql/ --user=mysql --initialize

运行初始化后,

vim /data/mysql/mysql.err
2020-07-05T03:38:52.580334Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-07-05T03:38:52.580411Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2020-07-05T03:38:52.580415Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2020-07-05T03:38:53.706961Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-07-05T03:38:53.905376Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-07-05T03:38:53.967412Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 0c91a1ad-be71-11ea-a90e-00163e06c7d5.
2020-07-05T03:38:53.969684Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-07-05T03:38:53.970066Z 1 [Note] A temporary password is generated for root@localhost: a;1sUgrMwq2H

这个日志文件的最下面,root@localhost: a;1sUgrMwq2H
root@localhost后面的一串字符串,就是初始化密码。可以保持下来,等会初次登陆的时候会用到。

运行初始化话的时候,可能会报错,
如果报错error while loading shared libraties: ibaio.so.l:cannot oped shared boject file: No such file or directory found
注意,关键字libaio.so.l
说明,缺少文件
出现该问题首先检查该链接库文件有没有安装使用 命令进行核查

rpm -qa|grep libaio   

运行命令后发现系统中无该链接库文件
那就需要安装依赖

yum install  libaio-devel.x86_64

这个错误,我在安装的时候是出现了。如果大家也遇到,可以参考一下。

这个时候,咱们先启动看一下,能不能运行起来

/usr/local/mysql-5.7.26/support-files/mysql.server start

在这里插入图片描述如果看到出现绿色的ok,那么说明我们的mysql是启动起来了,

7、添加软连接,并重启mysql服务

不能每次启动都输入一长串的路径来启动mysql的服务,对吧。

ln -s /usr/local/mysql-5.7.26/support-files/mysql.server /etc/init.d/mysql 

大概意思是,将/usr/local/mysql-5.7.26/support-files/mysql.server的这个文件,关联一个到/etc/init.d/mysql这个目录的这个文件

ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

把这个文件也连接一下

service mysql restart

然后执行重启命令
在这里插入图片描述两个绿色的ok,

8、初次登陆,并且修改密码

mysql -u root -p

提示输入密码,把上面日志中的那个临时密码,拿来输入
类型如下显示:

[root@localhost /]#  mysql -u root -p
Enter password:

输入密码的时候,是看不到有没有输入的,回车就好。

密码对了的话,就会进入到mysql>这种形式内

mysql>set password for root@localhost = password('你自己想设置的密码');

通过上面的语句,输入新的密码。注意,语句最后的分号,不要漏了。不然,不行啊。
在这里插入图片描述设置成功会给出响应。

9、开发远程连接

mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;

就这三条命令。
在这里插入图片描述类似这样的。

10、设置开机启动之类的
先切换到顶级目录,

cd /

将服务文件拷贝到init.d下,并重命名为mysql

cp /usr/local/mysql-5.7.26/support-files/mysql.server /etc/init.d/mysqld

赋予可执行权限

chmod +x /etc/init.d/mysqld

添加服务

chkconfig --add mysqld

显示服务列表

chkconfig --list

在这里插入图片描述类似这样,看到mysql运行啦。

11、本地软件远程连接服务器上的mysql
需要在esc服务器实例上的,安全组规则中添加一个:3306端口放开规则
不然就被防火墙阻止了,远程连接不了。

到此,就操作完成了。

附上我参考的找的比较好的文字,大家一起参考着看。
1、我只要参考这个
https://blog.csdn.net/weixin_38003389/article/details/90696337
2、初始化的时候,遇到错误了,这个有解决办法https://www.jianshu.com/p/276d59cbc529

3、还参考了这篇文章,我第一次是按照这个文章来的,但是按照他的这个步骤,跑不起来,有错,我又只能删了,重新安装我写的流程来。https://blog.csdn.net/lch520baby/article/details/89081306

猜你喜欢

转载自blog.csdn.net/qq_42991509/article/details/107137606