网上查了一大堆教程,各种问题就不说了,各种不对,报错,用不了,还卸载了重新安装。
特此记录一下正确的安装过程,以供小伙伴们参考。
现在买的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、我只要参考这个
2、初始化的时候,遇到错误了,这个有解决办法https://www.jianshu.com/p/276d59cbc529
3、还参考了这篇文章,我第一次是按照这个文章来的,但是按照他的这个步骤,跑不起来,有错,我又只能删了,重新安装我写的流程来。