前情提要:要在CentOS7服务器上部署项目,又因为服务器不能联网,所以无法安装docker以及使用docker拉镜像安装mysql,所以要学习一下通过安装包手动安装mysql。
本教程的参考文献:Codesheep
常用的版本为5.7
或8.0
(这里有坑后续说,尽量下载自己在win环境中项目常用的版本,否则在linux服务器上会有高低版本不适配的bug出现)
这里下载的是 mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
安装包,放在linux中的/usr/local/
目录下
如果系统之前自带 Mariadb ,要先卸载。首先查询已安装的 Mariadb 安装包:
rpm -qa|grep mariadb
yum -y remove mariadb-server-5.5.56-2.el7.x86_64
yum -y remove mariadb-5.5.56-2.el7.x86_64
yum -y remove mariadb-devel-5.5.56-2.el7.x86_64
yum -y remove mariadb-libs-5.5.56-2.el7.x86_64
在/usr/local
目录下,解压mysql安装包
tar -zxvf /root/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
使用此命令解压之后,会在/usr/local
目录下,生成一个新文件夹,名字叫mysql-5.7.36-linux-glibc2.12-x86_64
,名字太长,我们将其改名为mysql
。改名的命令:
mv mysql-5.7.36-linux-glibc2.12-x86_64 mysql
改完名之后,/usr/local
下就有一个名字叫mysql的文件夹,里面是mysql的各种文件。
如果你的安装包不在你想解压的路径下,可以只用-C
命令将器解压到你想要的目录下:
tar -zxvf /root/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz -C
/usr/local/
groupadd mysql
useradd -g mysql mysql
同时新建 /usr/local/mysql/data
⽬录,后续备用
在/usr/local/mysql
文件夹下:
chown -R mysql:mysql ./
在 /etc
⽬录下新建 my.cnf
⽂件,并写⼊如下简化配置:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放⽬录
datadir=/usr/local/mysql/data
# 允许最⼤连接数
max_connections=200
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
同时使⽤如下命令创建 /var/lib/mysql
⽬录,并修改权限:
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
执⾏如下两条命令正式开始安装:
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --
datadir=/usr/local/mysql/data
此处借用codesheep的图片说明:
这个密码要记住,首次登录需要
在/usr/local/mysql
文件夹下:
cp ./support-files/mysql.server /etc/init.d/mysqld
并修改 /etc/init.d/mysqld
,修改其 basedir
和 datadir
为实际对应⽬录:
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
⾸先增加 mysqld 服务控制脚本执⾏权限:
chmod +x /etc/init.d/mysqld
同时将 mysqld 服务加⼊到系统服务:
chkconfig --add mysqld
最后检查 mysqld 服务是否已经⽣效即可:
chkconfig --list mysqld
再次借用codesheep的图片
这样就表明 mysqld
服务已经生效了,在2、3、4、5运⾏级别随系统启动⽽⾃动启动,以后可以直接使⽤ service
命令控制 mysql
的启停。
在/usr/local/mysql
文件夹下直接执⾏
service mysqld start
这样⽅便以后在任意目录上都可以使用 mysql
提供的命令。
编辑 ~/.bash_profile
⽂件,在⽂件末尾处追加如下信息:
export PATH=$PATH:/usr/local/mysql/bin
source ~/.bash_profile
以 root
账户登录 mysql
,使用上文安装完成提示的密码进⾏登⼊
mysql -u root -p
在mysql的命令⾏执⾏如下命令即可,密码可以换成你想⽤的密码即可:
mysql>alter user user() identified by "111111";
mysql>flush privileges;
mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;
如果服务器无法联网,也不能使用可视化工具例如navicat
,我们将win中mysql8.0
的的结构与数据通过navicat
导出,若直接将导出的命令粘贴到Linux中5.7mysql
的命令行中,会报
[ERR] 1273 -Unknown collation: ‘utf8mb4_0900_ai_ci‘错误
原因:生成转储文件的数据库版本为8.0,要导入sql文件的数据库版本为5.6,因为是高版本导入到低版本,引起1273错误
解决方案: 打开sql文件,将文件中的所有
utf8mb4_0900_ai_ci
替换为utf8_general_ci
utf8mb4
替换为utf8