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程序运行用户权限一致。
浙公网安备 33010602011771号