linux环境安装部署Mysql5.7(单机)

Mysql安装与部署

安装前准备工作

(1)租用腾讯云服务器centos7.6 64位,公网IP为106.53.46.220

(2)下载并安装Xshell6

(3)下载并安装Navicat

1、下载安装包

MySQL5.7安装包可以去以下网址下载:

https://downloads.mysql.com/archives/community/

2、通过Xshell访问

Xshell 6.0.189.0中文版可以去以下网址下载:

https://www.onlinedown.net/soft/36383.htm

注意:下载可安装无广告插件的版本:Xshell6_onlinedown.exe

3、创建mysql目录

进入/opt目录

         mkdir mysql

4、上传Mysql安装包

rz -e 选择安装包

注意:rz命令需安装lrzsz:yum -y install lrzsz

5、解压Mysql安装包

      tar -zxvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz

6、重命名Mysql

         mv  mysql-5.7.27-linux-glibc2.12-x86_64 mysql5.7.27

7、卸载系统自带的 MySQL和Mariadb数据库

(1)检测系统是否自带安装 MySQL:

         rpm -qa | grep mysql

如有,类似

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

那可以选择进行卸载:

(2)删除已安装的Mysql

// 普通删除模式

         rpm -e 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 

(3)检查是否卸载完成

         rpm -qa | grep mysql 

(4)检查是否安装了mariadb

         rpm -qa|grep mariadb

(5)卸载mariadb  

         rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64

(6)检查是否卸载完成

         rpm -qa|grep mariadb

 

8、添加系统mysql组和mysql用户

#检查mysql组和用户是否存在,如无创建
         cat /etc/group | grep mysql

 

以上图为存在的情况,如无,执行添加命令:

      创建一个mysql用户组

         groupadd mysql

创建一个用户名为mysql的用户并加入mysql用户组

         useradd -g mysql mysql

9、安装数据库

(1)在/opt/mysql/mysql5.7.27目录下,创建data目录

         mkdir data

(2)将/opt/mysql/mysql5.7.27的所有者及所属组改为mysql

// chown(转变文件拥有者),第一个mysql是用户,第二个mysql是用户组

chown -R mysql.mysql /opt/mysql/mysql5.7.27/

// chgrp(转变文件所属用户组),此mysql为mysql用户组

chgrp -R mysql /opt/mysql/mysql5.7.27/

(3)在/opt/mysql/mysql/support-files目录下创建my_default.cnf

         touch my_default.cnf

 

拷贝以下内容到my_default.cnf中

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

basedir = /opt/mysql/mysql5.7.27

datadir = /opt/mysql/mysql5.7.27/data/mysql

port = 3306

socket = /tmp/mysql.sock

#网上建议注释掉

#character-set-server=utf8

#默认128M,改为20M,当然内容足够可以设置128M

innodb_buffer_pool_size = 20M

log-error = /opt/mysql/mysql5.7.27/data/mysqld.log

pid-file = /opt/mysql/mysql5.7.27/data/mysqld.pid

(4)查看 /etc/my_default.cnf 是否存在

#如果不存在 拷贝my_default.cnf 到/etc/my.cnf  

cp my.cnf /etc/my_default.cnf

cp my_default.cnf /etc/my.cnf    //如果提示已存在,则选择y进行覆盖

10、初始化 mysqld

#进入/opt/mysql/mysql/bin目录

./mysqld --defaults-file=/etc/my.cnf --basedir=/opt/mysql/mysql5.7.27/ --datadir=/opt/mysql/mysql5.7.27/data/mysql/ --user=mysql --initialize

11、查看密码

grep 'temporary password' /opt/mysql/mysql5.7.27/data/mysqld.log

 

dklul<krP4&=

12、启动mysql,更改root 密码,并使用Navicat链接

(1)配置mysqlServer

#先将mysql.server放置到/etc/init.d/mysql中

#进入到/opt/mysql/mysql/ support-files/目录下

         cp mysql.server /etc/init.d/mysql

(2)启动mysql

#进入/opt/mysql/mysql/bin/目录下,启动mysql

         service mysql start

或者:     /etc/init.d/mysqld start

(3)查看mysql进程

         ps -ef|grep mysql

(4)查看root初始密码

         cat /root/.mysql_secret

         密码为:KeJ=vfS+>uBj

(5)初始登录

#进入/opt/mysql/mysql/bin/目录下,登录mysql

         ./mysql -uroot -p

(6)登录异常处理

在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问的情况,参考以下方案处理:

修改/opt/mysql/mysql5.7.27/support-files/my_default.cnf

增加一行:skip-grant-tables并覆盖到/etc/my.cnf

cp my_default.cnf /etc/my.cnf

(7)重启MySQL:

/etc/init.d/mysqld restart

重启之后输入  mysql  或者  mysql -u root 即可进入mysql。(这里就是跳过了密码的验证)

(8)重新登录

接下来就是用sql来修改root的密码

./mysql -uroot -pgongyu520

update mysql.user set authentication_string=password('gongyu520') where user='root' ;

(9)退出mysql数据库

exit;

(10)使用Navicat链接上数据库

 

(11)关闭MySQL服务,并查看是否关闭成功

         /etc/init.d/mysqld stop

(12)设置开机自启

#复制脚本到资源目录

         cp /opt/mysql/mysql5.7.27/support-files/mysql.server /etc/rc.d/init.d/mysqld

#提示已存在,输入y覆盖

#增加mysqld服务脚本执行权限

         chmod +x /etc/rc.d/init.d/mysqld

#将mysqld服务加入到系统服务

         chkconfig --add mysqld

#检查mysqld服务是否已经生效

         chkconfig --list mysqld

 

    #启动mysqld服务

         service mysqld start 或者 /etc/init.d/mysqld start

    #配置my.cnf

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

basedir = /opt/mysql/mysql5.7.27

datadir = /opt/mysql/mysql5.7.27/data/mysql

#跳过密码处理

#skip-grant-tables

port = 3306

#socket = /tmp/mysql.sock

character-set-server=utf8

log-error = /opt/mysql/mysql5.7.27/data/mysqld.log

pid-file = /opt/mysql/mysql5.7.27/data/mysqld.pid

innodb_buffer_pool_size = 20M

lower_case_table_names=1

cp my_default.cnf /etc/my.cnf    //如果提示已存在,则选择y进行覆盖

    #配置全局环境变量

    #编辑/etc/profile文件vi /etc/profile,在底部配置

PATH=/opt/mysql/mysql5.7.27/bin:/data/mysql/lib:$PATH

export PATH

 

保存后刷新缓存

source /etc/profile

(13)配置远程登录账号

#进入/opt/mysql/mysql5.7.27/bin目录,启动mysql,登陆mysql

         service mysql start

mysql -uroot -pgongyu520

./mysql -uroot -p

注意:如果出现ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement

执行:ALTER USER USER() IDENTIFIED BY 'gongyu520';

#设置root账号可以远程登陆,和远程登录密码

GRANT all ON *.* TO 'root'@'%' IDENTIFIED BY 'gongyu520';

FLUSH PRIVILEGES;

附录1:mysql语法格式

GRANT privileges ON database.table TO 'username'@'host' [IDENTIFIED BY 'password'];

#eg. 赋予 local_user 在所有主机的所有权限,但不包含给其他账号赋予权限的权限GRANT all ON *.* TO 'local_user'@'%';

#刷新权限 权限更新后刷新才会起作用FLUSH PRIVILEGES;

#新增账号并设置权限

地址的主机可登录,host 为 "%",表示所有主机都可登录,省略代表所有主机

CREATE USER 'username'[@'host'] IDENTIFIED BY 'password';

# eg. 常见 local_user 用户可以在所有主机登录,密码为 123456

CREATE USER 'local_user' IDENTIFIED BY '123456';

# eg. 创建 local_user 只允许在本地登录

CREATE USER 'local_user'@'localhost' IDENTIFIED BY '123456';

附录2:mysql问题处理

在/opt/mysql/mysql5.7.27/data下有mysqld.log日志文件,具体错误里面都有描述,第一时间看日志再说。

(1)如果执行初始化语句报如下错误:

./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

如果安装mysql出现了以上的报错信息.这是却少numactl这个时候如果是Centos就yum -y install numactl就可以解决这个问题了.
ubuntu的就sudo apt-get install numactl就可以解决这个问题了

(2)如果执行启动mysql语句报如下错误:

MySQL.... ERROR! The server quit without updating PID file (/opt/mysql/mysql/data/mysqld.pid)

当然出现问题的可能性还有以下几种,我们挨个尝试并解决:

1、可能是/opt/mysql/data/数据目录mysql用户没有权限(修改数据目录的权限)

解决方法 :给予权限,执行 “chown -R mysql.mysql /opt/mysql/mysql/data” 然后重新启动mysqld

2、可能进程里已经存在mysql进程

解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。

解决方法:去mysql的二进制日志目录看看,如果存在mysql-binlog.index,就赶快把它删除掉吧

4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]下有没有指定数据目录(datadir)。

解决方法:请在[mysqld]下设置这一行:datadir = /opt/mysql/data

5、skip-federated字段问题

解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6、错误日志目录不存在

解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7、selinux惹的祸,如果是centos系统,默认会开启selinux

解决方法:先临时改为警告模式:[root@www php]# setenforce 0

然后打开/etc/sysconfig/selinux,把SELINUX=enforcing改为SELINUX=disabled

8、启动失败注意检查数据目录的权限,要与mysql程序运行用户权限一致。

posted @ 2020-06-08 20:00  荆楚龚三哥  阅读(455)  评论(0)    收藏  举报