mysql 5.6 rpm安装启动、配置参数、字符集修改等
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