linux 7 安装mysql server 注意:此mysql版本是el6
MySQL-server-5.6.35-1.el6.x86_64
一、安装部署:
1.yum:首先要配置yum源,yum安装会直接解决包依赖关系
2.rpm:单个软件包的安装.xx.rpm
3.源码安装:make编译方式,部署到linux,自定义变量,路径等
(一)依赖包安装过程:
1、先安装上传工具:
yum install lrzsz
安装之后使用rz命令上传文件
2、安装mysql_server包:
报错1;缺少 libnuma.so
yum list |grep -i numa
yum install numactl.x86_64
报错2:冲突file /usr/share/mysql/charsets/README from install of MySQL-server-5.6.35-1.el6.x86_64
conflicts with file from package mariadb-libs-1:5.5.60-1.el7_5.x86_64
rpm -qa|grep -i mariadb
yum remove mariadb-libs-5.5.60-1.el7_5.x86_64
报错3:初始化时没有data:dumper导致报错
FATAL ERROR: please install the following Perl modules
before executing /usr/bin/mysql_install_db:
Data::Dumper
yum list |grep -i dumper
yum install perl-Data-Dumper.x86_64 -y
3、删除之前的不完整安装,重新安装:
rpm -e MySQL-server-5.6.35-1.el6.x86_64
rm -rf /var/lib/mysql/
4、rpm安装:
rpm -ivh MySQL-server-5.6.35-1.el6.x86_64.rpm
5、安装过程的注意点:
1.缺什么补什么,如下包
yum install numactl.x86_64 -y
2.哪个冲突删哪个
rpm -qa:查询已经安装的rpm包
rpm -qa|grep -i mariadb
yum remove mariadb-libs-5.5.60-1.el7_5.x86_64
yum list |grep -i dumper
yum install perl-Data-Dumper.x86_64 -y
rpm -e MySQL-server-5.6.35-1.el6.x86_64
rm -rf /var/lib/mysql/ (安装有脏文件需要重新安装时清理之前的安装文件)
6、初始化密码存储位置:
A random root password has been set.
You will find it in '/root/.mysql_secret'.
7、安装客户端:
rpm -ivh MySQL-client-5.6.35-1.el6.x86_64.rpm
安装后会有个mysql命令
8、启动mysql服务:
1)报错1:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
一般是服务没有启动
2)服务启动:
service mysql start
Starting MySQL.Logging to '/var/lib/mysql/VM_0_6_centos.err'.
SUCCESS!
service mysql status
ps -ef|grep mysql
9.登录数据库:
1)报错1,ERROR 1045 (28000):
Access denied for user 'root'@'localhost' (using password: NO)
需要密码
初始化密码保存在
cat /root/.mysql_secret
2)mysql -uroot -p初始化密码
show databases;
3)重新设置密码:
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
初始化时生成的是随机密码
要求使用前必须自定义设置个密码
set password=password('123456');
help SET PASSWORD
二、服务组件,服务目录
1、mysql进程:
ps -ef|grep mysql
mysqld_safe :mysql的守护进程,默认安装都会有,也可以不启动
作用:mysql进程异常挂掉,mysqld_safe会尝试重新拉起一个mysql进程
datadir:数据存储目录
--basedir=/usr #mysql的安装目录,mysql启动命令,服务工具等
--datadir=/var/lib/mysql #mysql的数据存储目录,库表,日志等
--plugin-dir=/usr/lib64/mysql/plugin #插件补丁的目录
--user=mysql #启动用户
--log-error=/var/lib/mysql/VM_0_6_centos.err #错误日志文件
--pid-file=/var/lib/mysql/VM_0_6_centos.pid #进程号存储文件
2、查看监听端口:
netstat -tanlp|grep mysql
三、mysql卸载:
1、卸载步骤:
service mysql stop
rpm -e MySQL-server-5.6.35-1.el6.x86_64
rm -rf /var/lib/mysql/
2、MySQL的主要目录
basedir: 安装目录
datadir: 数据目录
auto.cnf : 自动生成的,存放的是server_uuid
ibdata1 : 共享表空间,存放元数据和事务日志回滚段的
ib_logfile0、ib_logfile1:事务日志,里面存的是redo_log
mysql: 这个目录对应的是数据库里的mysql库,user表存在该库
这个库存放的是权限信息和系统元数据信息,
mysql.sock : 服务启动生成的套接字,只在本机登陆时有用
performance_schema :系统库,统计服务运行数据
RPM_UPGRADE_HISTORY :不是mysql的,是rpm包带的版本记录
RPM_UPGRADE_MARKER-LAST
test : 是mysql初始化时创建的测试库
VM_0_6_centos.err :mysql的错误日志,对应定位服务异常很重要
VM_0_6_centos.pid :存放的是服务进程号
四、mysql 的配置文件 my.cnf:
1、配置文件位置:
find / -name my.cnf
/etc/my.cnf 为最高优先级
/usr/my.cnf
mysql启动时优先去/etc下找配置文件,如果没有会basedir和datadir去找
2、配置文件说明:
[mysqld] 参数作用的范围是server,
[client] 作用范围就是客户端
3、关闭selinux:
selinux:美国的一个安全部门搞的一套安全组件,必须要求求服务走默认
端口,也不可以随意修改,修改的话服务会无法正常启动。
setenforce 0 临时关掉,重启失效;
vim /etc/selinux/config 持久化彻底关掉
SELINUX=disabled
4、配置临时修改、持久化修改:
1)linux参数修改的加载方式
修改当前环境变量
修改配置做持久化:
2)mysql参数修改加载方式:
配置文件的修改只有重启才能够重新加载生效
mysql命令行修改,只对当前环境生效,重启或断开连接都可能失效
有些参数必须修改配置文件重启才能生效
5、修改端口
vim /usr/my.cnf
port = 3307
service mysql restart
6、修改datadir ,数据目录往往都会很大,一般都用单独的盘来存储
mkdir /data/mysql_3306
cd /data/mysql_3306/
mv /var/lib/mysql/* .
chown mysql.mysql /data/mysql_3306
报错1:2019-11-23 14:47:00 17291 [ERROR] /usr/sbin/mysqld: Can't create/write to file '/data/mysql_3306/VM_0_6_centos.pid' (Errc
ode: 13 - Permission denied)
2019-11-23 14:47:00 17291 [ERROR] Can't start server: can't create PID file: Permission denied
这个错误的原因是权限,datadir,mysql必须有读写权限
chown mysql.mysql mysql_3306
7、mysql 命令行修改参数
show global variables like "port";
set global port=3308;
8.set global port=3308;
ERROR 1238 (HY000): Variable 'port' is a read only variable
这一类参数不能使用set方式修改,只能通过修改配置文件重启才能生效
部分参数可以直接使用set进行修改,set修改的参数,重启或断开连接会变为
初始值
如果要持久化,比如同时修改my.cnf的配置
9、参数修改的生效范围:
global 是对整个server服务生效的,set global后,当前连接不生效
session 是对当前会话,对整个server不生效,断开连接重新连就失效
变量会分为全局变量和会话级变量
set character_set_client=utf8;
set names latin1;
10、注意的点:
1)查看server级的参数设置一定要用
show global variables like "%char%",
修改server级的变量,一定要用global
set global xxx=xxx
持久化的话一定要改配置文件,避免重启后失效
五、字符集
1、客户端字符集、服务端字符集:
避免乱码最好的方式是将字符集设置统一,一般都采用UTF8作为默认字符集,
表里存的数据是UTF8,客户端用gbk来连就可能产生乱码
2、如果遇见字符乱码,如何处理:
1)检查表的字符集
show create table mysql.user
2)检查连接的字符集
show variables like "%char%";
3)检查连接工具的字符集
latin1 一个字符占用一个字节
gbk 一个字符占用两个字节,出现的瓶颈点在于出海和国际统一
UTF8 一个字符占用3个字节,比较通用的字符集,所以都默认采用
UTF8MB4一个字符占用4个字节,emoj表情一般会选择utf8mb4
一个字节 8byte 00000000
六、存储引擎:
1、插件式引擎:
mysql-server,服务端分为server和引擎层,引擎层是选择数据如何存储,
索引数据,是否使用事务等
innodb目前最主流的存储引擎
2、查看mysql的引擎:
show engines;
default代表默认引擎,假如建表时不指定引擎,就采用默认的
如果创建表时不指定,系统会给表分配默认的引擎和字符集
引擎是表的属性
3、sql语句默认结束符;,英文分号,还有一个是\G,格式化输出
4、INNODB、MyIsam优势、劣势:
1)支持事务,事务具有可提交可回滚的属性,还支持崩溃恢复
redo_log和undo_log,
2)行级锁
3)支持外键
4)缺点,占用更多存储空间
MyIsam,不支持事务,表级锁
表容易损坏,数据量大的话修复时间需要特别长
gr_1 innodb 表,.frm文件存放表的结构,.ibd文件存的是数据和索引
gr_2 myisam 表,.frm文件存放表的结构,.MYD 存数据的,.MYI存索引的
留的云服务器:
49.233.190.77
152.136.147.50