相信很多小伙伴都体验过初学linux时安装mysql的痛苦,这里我总结了一下在centos7上安装mysql5.7的步骤(我是装在了阿里云服务器上)
mysql5.7安装包(linux版):
链接:https://pan.baidu.com/s/1t2eILoJOP1zufHL83xTDFA
提取码:en1i
1、安装前的准备工作
1.1 执行安装命令前,检查并删除默认安装的mysql-libs/MariaDB
CentOS6
#查询是否默认安装了mysql-libs
rpm -qa|grep mysql
#如果存在mysql-libs的旧版本包如下:请先执行卸载命令
rpm -e --nodeps mysql-libs
CentOS7
#查询是否默认安装了mariadb
rpm -qa|grep mariadb
#如果存在如下,请先执行卸载命令:mariadb-libs-5.5.52-1.el7.x86_64(输入你们对应查出来的版本)
rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
1.2 检查并安装以下两项依赖,
# 检查
rpm -qa|grep libaio
rpm -qa|grep net-tools
# 安装
yum install libaio -y
yum install net-tools -y
1.3 检查并赋予 tmp 目录权限
由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以给/tmp较大的权限
执行 :
chmod -R 777 /tmp
2、正式安装
上传以下文件分别执行安装
在mysql的安装文件目录下执行:(必须按照顺序执行)
rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm
如果在安装mysql-community-server前没有事先安装好前三个依赖环境会报错
3、查看MySQL版本号
执行mysqladmin --version命令,类似java -version打出消息,即为成功。
4、mysql服务的初始化
如果你是以 root 身份运行 mysql 服务,需要执行下面的命令初始化
mysqld --initialize --user=mysql
--initialize选项默认以“安全”模式来初始化,会为 root 用户生成一个临时密码,登陆后你需要设置一个新密码
查看生成的临时密码:
cat /var/log/mysqld.log
把密码粘贴复制保存一下,下面登录修改密码会用到
5、MySQL服务启动/关闭/状态命令
# 启动:
systemctl start mysqld
# 状态:
systemctl status mysqld
# 关闭:
systemctl stop mysqld
启动mysql
6、root首次登录/修改密码
首次登录:
输入 mysql -uroot -p命令进行登录
首次登陆通过需要录入初始化密码:
在Enter password 输入刚才保存的临时密码
修改密码:
上面登录进mysql后,输入命令修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
设置完密码就可以用新密码登陆,正常使用数据库了
7、退出登录验证
在mysql窗口输入quit退出登录
8、mysql自启动
查看mysql是否自启动(默认自启动)
systemctl list-unit-files|grep mysqld.service
如不是enabled可以运行如下命令设置自启动
systemctl enable mysqld.sercice
9、修改数据库/表的字符集
为什么要修改字符集?
通过下面案例说明
创建测试数据库:
create database mydb01;
切换到该数据库:
use mydb
创建测试表:
create table mytbl(id int,name varchar(20));
测试插入中文数据:
insert into mytbl values(1,‘张三’);
会发现插入报错,原因是 mysql默认使用的字符集是Latin1,不支持中文字符,因此我们要把他修改成utf-8
修改步骤:
步骤一:
修改配置文件 vim /etc/my.cnf在最后加上中文字符集配置
character_set_server=utf8
步骤二:
重新启动mysql systemctl restart mysqld并查看状态systemctl status mysqld
已生成的库表字符集变更:
上面修改了字符集后,再次往mytbl表执行insert语句的时候依然报错,这是为什么呢?
我们使用命令查看上面在字符集更改前创建的库表的字符集详情
show create database mydb; #查看数据库字符集详情
show create table mytbl; #查看表字符集详情
原来是修改全局的对已生成的库表字符集不会产生改变,下面我们对已生成的库表字符集进行变更
修改指定数据库的字符集
alter database mydb character set 'utf8';
修改指定数据表的字符集 alter table mytbl convert to character set 'utf8';
如果数据库已经存储乱码数据:更新数据或者删除数据
10、使用navicat连接mysql
出现问题:
问题原因:
连接用户名的访问权限不足
解决办法:授予权限
登录mysql,授予通过网络方式登录的root用户对所有库所有表的全部权限
grant all privileges on *.* to root@'%' identified by '密码';
最后需要刷新权限才能生效
flush privileges;
11、开放端口/关闭防火墙
开放端口:
如果是在腾讯云或阿里云服务器上安装的mysql,需要配置安全组,放行端口(以阿里云为例)
关闭防火墙:
输入命令永久关闭防火墙
systemctl disable firewalld.service
12、mysql安装相关文件位置
参数路径解释备注–basedir/usr/bin相关命令目录mysqladmin mysqldump等命令
–datadir/var/lib/mysql/mysql数据库文件的存放路径
–plugin-dir/usr/lib64/mysql/pluginmysql插件存放路径
–log-error/var/lib/mysql/jack.atguigu.errmysql错误日志路径
–pid-file/var/run/mysqld/mysqld.pid进程pid文件
–socket/var/lib/mysql/mysql.sock本地连接时用的unix套接字文件
/usr/share/mysql配置文件目录mysql脚本及配置文件
/etc/systemd/system/multi-user.target.wants/mysqld.service服务启停相关脚本