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

浙公网安备 33010602011771号