CentOS 离线安装mysql5.7.25(原创)

环境说明:

VMware虚拟机,部署免安装版的MySQL5.7.25

 项目

版本

说明

 操作系统

CentOS Linux release 7.5.1804 (Core)

最小化安装

 MySQL

mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

压缩包

 

 

 

 

 

 

 

注意:我装的mysql版本是5.7.25,我是自己安装完成之后,又回头写的这篇文章。

 

ps:先把文章看一遍,大概有思路,然后在按照步骤做。

 

 

一、下载mysql

有网下载离线安装包

linux执行  wget https://dev.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

1、显示-bash: wget: command not found 那么用yum安装 yum -y install wget

2、如果下载较慢,可以下载到本地 然后传到linux中,上面地址可以用下载工具下载

 

二、解压处理

1、tar -xzvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz

2、把上面解压的目录重命名,方便操作

3、这是我自己的目录,cd  /root/mysql

 

 

 

 

三、卸载相关mysql插件

卸载Linux系统上自带的mysql插件(old版本)(由于我自己装的linux系统是最小化的,没有出现遗留mysql问题)

查找mysql相关安装

执行  rpm -qa|grep -i mysql

 

可能会出现以下的一个或多个,没有更好,说明你的系统很干净,但是以防万一,还是需要查看的

perl-DBD-MySQL-4.013-3.el6.x86_64

mysql-libs-5.1.71-1.el6.x86_64

qt-mysql-4.6.2-26.el6_4.x86_64

mysql-5.1.71-1.el6.x86_64

mysql-server-5.1.71-1.el6.x86_64

mysql-community-common-5.7.23-1.el7.x86_64

如果出现了上面的一个或多个,也不用担心,使用卸载命令,有几个干掉几个!

卸载命令:rpm –ev {包名},如:

执行  rpm -ev mysql-community-common-5.7.23-1.el7.x86_64

 

find / -name mysql

最后使用命令:rpm -qa|grep -i mysql,重新检查一遍系统中是否安装mysql。

如果是centos7,那么默认会安装一个mysql的分支产品mariadb,必须先卸载此分支产品

执行  rpm -qa | grep mariadb

拷贝找到的列表,一个个卸载,如

执行  rpm -e --nodeps mariadb-libs-5.5.35-3.el7.x86_64

 

 

四、查看组和用户情况

执行  cat /etc/group | grep mysql

执行  cat /etc/passwd |grep mysql

 

 

若存在,则删除原mysql用户:userdel -r mysql,会删除其对应的组和用户。(安装之前如果有,我这个刚才已经装完了)

在查看就会发现没有,说明你已经删掉了

创建mysql组和mysql用户

执行   groupadd mysql

执行  useradd -r -g mysql mysql

执行  chown -R mysql:mysql /usr/local/mysql

 

五、创建配置文件及相关目录

1、修改配置文件:/etc/my.cnf,配置不对的话,后面初始化不全,会拿不到默认密码。

 

2、执行 vim /etc/my.cnf    (或者,在本地建立一个,上传到/etc/目录下)

把下面的参数都放进去:[mysqld] 参数都是可以修改的,调优都在这里面。

 

[mysqld]
port = 33106
basedir=/root/mysql
datadir=/root/mysql/data

socket=/root/mysql/mysql.sock

log_error =/root/mysql/mysql.log #mysql存放日志

#pid-file=/root/mysql/cnf/mysqld/mysqld.pid #记录的是当前 mysqld 进程的 pid,pid 亦即 Process ID。

symbolic-links=0

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

[client]
default-character-set=utf8
socket=/root/mysql/mysql.sock

[mysql]
default-character-set=utf8

[mysqld]

# 配置数据库名和表名的大小写。值为1表示不区分大小写,0表示区分大小写。
lower_case_table_names = 1

#记录日志 例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这#个命令也会存储到日志文件中(如果不是读写分离,可以不用,占用很大)
#log-bin=mysql-bin 
expire_logs_days = 2 # 日志保留2天
max_allowed_packet = 200M #限制server接受的数据包大小

binlog-format=ROW 
server_id=1 
max_connections=1000 #mysql最大连接数

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
# 设置MySQL断开时间为1年,windows最大为24天
wait_timeout=31536000
interactive_timeout=31536000

 

 

配置文件其他参数,自行百度查阅,这里只提供通用的

 

3、最后保存退出 :wq!

 

4、创建文件/tmp/mysql.sock:设置用户组及用户,授权

依次执行

 

[root@localhost bin]# cd /root/mysql/
[root@localhost mysql]# touch mysql.sock
[root@localhost mysql]# chown mysql:mysql mysql.sock
[root@localhost mysql]# chmod 755 mysql.sock
[root@localhost mysql]# 

 

创建文件mysqllog日志

[root@localhost mysql]# cd /root/mysql/
[root@localhost mysql]# touch /root/mysql/mysql.log
[root@localhost mysql]# chown -R mysql:mysql /root/mysql/mysql.log
[root@localhost mysql]# chmod 755 mysql.log

 

六、安装和初始化数据库

1、进入bin目录

[root@localhost mysql]# cd /root/mysql/bin/

 

 

2、初始化数据库

如果MySQL放在root目录,要设置权限才行

#权限设置
[root@localhost bin]# chmod 777 /root/ [root@localhost bin]# chown -R mysql /root/mysql/data/ [root@localhost bin]# chgrp -R mysql /root/mysql/data/
#初始化数据库--后面的改成自己数据库路径 [root@localhost bin]# ./mysqld --initialize --user=mysql --basedir=/root/mysql --datadir=/root/mysql/data

 

ps:我这里没有报错,参考文章里说报错./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory。

解决 yum install -y libaio。完成之后,在执行一遍初始化数据库。

3、安全启动

执行  ./mysqld_safe --user=mysql &

4、是否启动成功,可以通过查看mysql进程,ps -ef | grep mysql

有MySQL的进程 表示已经启动成功

5、root默认密码在mysqld.log日志里, 执行下面命令,其中root@localhost: 后面的就是默认密码,后面登录用.(如果找不到可能默认是空,登录时密码直接回车,否则可能安装有问题)

执行  ,如果用工具的话也可以直接打开看

[root@localhost bin]# cat /var/log/mysqld.log

 

5、进入bin目录,

执行 cd /root/mysql/bin/

 

登录mysql:

执行 ./mysql -u root -p

拷贝或者输入mysqld.log中获得的默认密码,即可进入mysql命令客户端。

 

进入后首先重置密码,不然无法操作数据库(by后面是密码): ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

然后 查看数据库 show databases;

表示数据库已经可以用了。

 

启动数据库   service mysql start

停止数据库  service mysql stop

重启数据库  service mysql restart

 6、添加端口防火墙

 33106这是我这里MySQL端口号

[root@localhost ~]# firewall-cmd --zone=public --add-port=33106/tcp --permanent

七、继续设置登陆权限

(安装完成之后,外网连接数据库,会出现mysql "select command denied to user root" 问题解决)

 

请继续看下方  8、MySQL--创建用户

查看虚拟机ip地址

ifconfig 或者 ip addr

到此,用本地的navicat就可以连接虚拟机mysql数据库了,局域网的需要配置net就可以连接了,我这里就不讲了。

给你们个截图,我这里虚拟机的NET设置

   

 

 

——————————————————————————————————————

八、MySQL--创建用户

1、添加一个外网和内网root用户一样的权限

-- 创建一个外网root用户

CREATE USER 'root'@'%' IDENTIFIED BY 'root';

-- 给root用户赋权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root'WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

 

-- 删除一个外网用户

DROP USER 'root'@'%';

-- 删除

DROP DATABASE IF EXISTS `root` ;

 

2、创建用户和数据库,并且赋权限

 

-- 创建用户

登陆数据库

MySQL -u root -p

CREATE USER '115'@'localhost'  IDENTIFIED BY '115'; #本地登录

CREATE USER '115'@'%'  IDENTIFIED BY '115'; #远程登录

 

-- 创建数据库

CREATE DATABASE IF NOT EXISTS testdb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

 

-- 授权115用户有testdb数据库的某一部分权限:

grant select,delete,update,create,drop on testdb.* to 115@'%' identified by '115';

 

-- 授权115用户拥有testdb数据库的所有权限:

grant all privileges on testdb.* to '115'@'%' identified by '115';

 

--授权115用户拥有所有数据库的某一部分权限:

grant select,delete,update,create,drop on *.* to '115'@'%' identified by '115';

 

-- 表示刷新权限变更即生效。

flush privileges;

 

附:权限说明

 

九、将MySQL添加为系统服务

  1、查看pid文件路径

  

[root@localhost bin]# ps -ef|grep mysql

  

 

 

 

  2、在/usr/lib/systemd/system目录下增加mysql.service,内容如下,其中XXX.pid即为上一步获取到的pid文件路径

 

[Unit]
Description=Mysql
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/root/mysql/data/localhost.localdomain.pid
ExecStart=/root/mysql/support-files/mysql.server start
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false

[Install]
WantedBy=multi-user.target

  3、重新载入单元,扫描新的或有变化的单元,使刚刚添加的mysql.service生效

  

[root@localhost bin]# systemctl daemon-reload

 

  4、可以通过以下命令操作

  

-- 设为开机启动
systemctl enable mysql

-- 启动
systemctl start mysql

-- 停止
systemctl stop mysql

-- 重启
systemctl restart mysql

 

posted @ 2019-06-20 09:47  雁书几封  阅读(721)  评论(0)    收藏  举报