准备
一台装有centos7.8的电脑(或虚拟机),mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar mysql的rpm安装集合包
下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
一、安装环境
我们先把下载的mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar 上传到我们的centos系统中,这里我是放到了 /opt 文件夹中
然后我们建立一个新的,用于盛放tar文件释放后文件的文件夹:
cd /opt
mkdir mysql
然后运行解压命令:
tar -xf mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar -C mysql
这时,我们再到mysql的目录下就可以看到解压出来的rpm包,大概有10 几个以.rpm 格式结尾的文件。
资源都准备好了,现在我们来看一下环境:
由于CentOs7之后会在系统中自带一个免费的数据库:mariadb,并且它的驱动和mysql的驱动是有冲突的,所以我们必须先要卸载他。
首先用rpm命令查看一下是否有mariadb,然后再删除:
rpm -qa | grep -i mariadb
查询命令执行后,如果下方列出了类似这种文件
mariadb-libs-5.5.52-1.el7.x86_64
则需要我们用rpm命令删除这个版本的mariadb:
rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
这个名字在不同版本的系统上可能不一样,大家需要注意。
如果是centos7之前的版本的话,可能会自带mysql,这是我们需要按照上述步骤删除mysql,这里不再赘述。
由于mysql的server端需要perl语言的支持,因此我们还需要在系统中安装perl支持:
yum install perl -y
二、安装
由于我们上面解压出来的几个rpm包有依赖关系,所以我们需要 按照顺序 执行安装:
rpm -ivh mysql-community-common-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.30-1.el7.x86_64.rpm
这几个包的安装完成之后,我们的数据库也就安装完成了,有几个需要注意的地方:
数据库目录:/var/lib/mysql/
命令配置:/usr/share/mysql (mysql.server命令及配置文件)
相关命令:/usr/bin (mysqladmin mysqldump等命令)
启动脚本:/etc/rc.d/init.d/ (启动脚本文件mysql的目录)
系统配置:/etc/my.conf
三、运行-初始化
安装完成了,我们需要先把mysql运行起来,这样我们才能进行接下来的配置。
ps.强烈建议在root用户环境下进行初始化配置,方便用户和密码的创建。
现在我们可以先看一下 /var/lib/mysql/ 目录下是否有东西,我们可以发现这个目录下是没有东西的,或者是连mysql这个目录都没有,也就是说数据库还没有初始化。现在我们来配置mysql的启动,个人比较推荐使用服务的方式启动(centos7特有):
systemctl start mysqld.service
这样就把mysqld这个服务添加到系统中了,我们可以用service进行启动了,启动,停止,重启的命令如下:
启动的 3 种方式:
service mysqld start ### 使用 service 启动:
/etc/inint.d/mysqld start ### 使用 mysqld 脚本启动:
safe_mysqld& ### 使用 safe_mysqld 启动:
停止的 3 种方式:
service mysqld stop ### 使用 service 停止:
/etc/inint.d/mysqld stop ### 使用 mysqld 脚本停止:
mysqladmin shutdown ###
重启:
service mysqld restart ### 使用 service 重启:
/etc/inint.d/mysqld restart ###
我们在启动了mysql之后,这个时候等待一段时间,数据库需要进行初始化,这个时候我们可以看一下数据库的日志,会发现mysql帮我们初始化了一个root用户,以及一个临时登录密码 :
cat /var/log/mysqld.log
mysql -u root -p
password 输入上图中,红框圈出的自动生成的密码,完成登录。
注意:以下的命令操作均是在已经登录mysql 后,在mysql命令行操作的:
修改密码:
set password = password('123456');
由于我们设置的密码过于简单,所以Mysql 会提示失败,具体提示如下:
Your password does not satisfy the current policy requirements.
原来,MySQL5.6.6 版本后增加了密码强度验证插件validate_password,相关参数设置的较为严格,我们可以降低它的密码验证强度从而可以设置任意密码。
执行以下命令修改mysql全局参数配置
set global validate_password_policy=0; 设置密码强度检查等级
set global validate_password_length=3; 设置密码最低强度
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
执行成功了然后修改密码没有问题了
SET PASSWORD = PASSWORD('123456');
不过,如果是为了安全起见,可以设置符合安全规则的密码,这样更好。
设置外部远程访问权限:
grant all privileges on *.* to 'root' @'%' identified by '123456';
flush privileges;
注意:此时,可以退出mysql 下的命令行了:
exit;
##或者
quit;
开放端口:
这里设置完之后,就可以在其他局域网内电脑上用Navicat连接一下看看能不能连接了,如果遇到带有数字的报错(非denind)的话,可以尝试开启防火墙的端口限制:
#开启3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#刷新防火墙
firewall-cmd --reload
设置开机启动:
chkconfig mysqld on
注意:后续使用中发现,很多代码提示,数据库表不存在。但是在数据库工具中查看,是可以看到的表是有的。这是的考虑的是。数据库表名 大小写的敏感的问题。以防万一,将数据库设置成 大小写不敏感,就正常了。
具体的方法如下:
1.windows下
到安装mysql的目录,修改my.ini文件
在文件最后一行加上下面一句话
lower_case_table_names=1
lower_case_table_names = 1
说明 0:区分大小写,1:不区分大小写
效果如下
[mysqld]
port = 3306
basedir=F:/mysql-5.7.21-winx64
datadir=F:/mysql-5.7.21-winx64/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8
lower_case_table_names=1
重启mysql
2.linux下
进入etc下面
cd /etc/
编辑my.cnf文件
vi my.cnf
最后一行加上下面一句
lower_case_table_names=1
效果如下
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
lower_case_table_names=1
至此,我们的mysql数据库就已经安装完成,并能随系统启动和外部访问了。