Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2431|回复: 1
打印 上一主题 下一主题

centos 7 安装 mysql 5.6

[复制链接]

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
跳转到指定楼层
楼主
发表于 2017-7-25 10:30:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 java 于 2017-7-26 09:55 编辑

首先检查 MySQL 是否已安装
yum list installed | grep mysql
如果有的话 就全部卸载
yum -y remove +数据库名称

如: yum -y remove mysql-community-release.noarch

MySQL 依赖 libaio,所以先要安装 libaio
yum search libaio # 检索相关信息
yum install libaio # 安装依赖包


下载 MySQL Yum Repository
然后
添加 MySQL Yum Repository
添加 MySQL Yum Repository 到你的系统 repository 列表中,执行

yum localinstall mysql-community-release-el7-5.noarch.rpm

如果提示-bash: wget: 未找到命令,请先执行 yum install wget 安装 wget

验证下是否添加成功yum repolist enabled | grep "mysql.*-community.*"

选择要启用 MySQL 版本
查看 MySQL 版本,执行
yum repolist all | grep mysql
可以看到 5.5, 5.7 版本是默认禁用的,因为现在最新的稳定版是 5.6
yum repolist enabled | grep mysql
查看当前的启动的 MySQL 版本
通过 Yum 来安装 MySQL
执行
yum install mysql-community-server
Yum 会自动处理 MySQL 与其他组件的依赖关系

遇到上述提示,输入 y 继续,执行完成会提示“完毕!”。


已安装:
  mysql-community-libs.x86_64 0:5.6.37-2.el7                                                               mysql-community-server.x86_64 0:5.6.37-2.el7                                                              

作为依赖被安装:
  mysql-community-client.x86_64 0:5.6.37-2.el7          mysql-community-common.x86_64 0:5.6.37-2.el7          net-tools.x86_64 0:2.0-0.17.20131004git.el7          perl.x86_64 4:5.16.3-291.el7                     
  perl-Carp.noarch 0:1.26-244.el7                       perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7          perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7          perl-DBI.x86_64 0:1.627-4.el7                    
  perl-Data-Dumper.x86_64 0:2.145-3.el7                 perl-Encode.x86_64 0:2.51-7.el7                       perl-Exporter.noarch 0:5.68-3.el7                    perl-File-Path.noarch 0:2.09-2.el7               
  perl-File-Temp.noarch 0:0.23.01-3.el7                 perl-Filter.x86_64 0:1.49-3.el7                       perl-Getopt-Long.noarch 0:2.40-2.el7                 perl-HTTP-Tiny.noarch 0:0.033-3.el7              
  perl-IO-Compress.noarch 0:2.061-2.el7                 perl-Net-Daemon.noarch 0:0.48-5.el7                   perl-PathTools.x86_64 0:3.40-5.el7                   perl-PlRPC.noarch 0:0.2020-14.el7               
  perl-Pod-Escapes.noarch 1:1.04-291.el7                perl-Pod-Perldoc.noarch 0:3.20-4.el7                  perl-Pod-Simple.noarch 1:3.28-4.el7                  perl-Pod-Usage.noarch 0:1.63-3.el7               
  perl-Scalar-List-Utils.x86_64 0:1.27-248.el7          perl-Socket.x86_64 0:2.010-4.el7                      perl-Storable.x86_64 0:2.45-3.el7                    perl-Text-ParseWords.noarch 0:3.29-4.el7         
  perl-Time-HiRes.x86_64 4:1.9725-3.el7                 perl-Time-Local.noarch 0:1.2300-2.el7                 perl-constant.noarch 0:1.27-2.el7                    perl-libs.x86_64 4:5.16.3-291.el7               
  perl-macros.x86_64 4:5.16.3-291.el7                   perl-parent.noarch 1:0.225-244.el7                    perl-podlators.noarch 0:2.5.1-3.el7                  perl-threads.x86_64 0:1.87-4.el7                 
  perl-threads-shared.x86_64 0:1.43-6.el7              

替代:
  mariadb-libs.x86_64 1:5.5.52-1.el7                                                                                                                                                                                 

完毕!

此时MySQL 安装完成,它包含了 mysql-community-server、mysql-community-client、mysql-community-common、mysql-community-libs 四个包。
执行
rpm -qi mysql-community-server.x86_64 0:5.6.37-2.el7
执行
whereis mysql
可以看到 MySQL 的安装目录是 /usr/bin/


启动和关闭 MySQL Server
启动 MySQL Server

systemctl start  mysqld

查看 MySQL Server 状态


systemctl status  mysqld

关闭 MySQL Server

systemctl stop mysqld

测试是否安装成功


mysql
可以进入 mysql 命令行界面



防火墙设置
远程访问 MySQL, 需开放默认端口号 3306.
执行
firewall-cmd --permanent --zone=public --add-port=3306/tcp

firewall-cmd --permanent --zone=public --add-port=3306/udp
这样就开放了相应的端口。
执行
firewall-cmd --reload

查看指定区域所有打开的端口
sudo firewall-cmd --zone=public --list-ports

MySQL 安全设置
服务器启动后,可以执行
mysql_secure_installation;

此时输入 root 原始密码(初始化安装的话为空),接下来,为了安全,MySQL 会提示你重置 root 密码,移除其他用户账号,禁用 root 远程登录,移除 test 数据库,重新加载 privilege 表格等,你只需输入 y 继续执行即可。
至此,整个 MySQL 安装完成。
下面可以看到都只能本机访问mysql,
登陆mysql数据库可以通过如下命令:
mysql -u root -p
-u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。


如果要外部可以访问mysql,那么host这里应该是显示%,所以这里我们可以选择重新创建一个用户并授予最高的权限,语句如下:
登录mysql后,执行如下命令
grant all privileges on *.* to 'root'@'%'  identified by 'lam7' with grant option;
//这句话就是给root账户设置密码为lam7且host为%,即外部任何主机均可访问。*.*这个本意是数据库名.表名,我们这里没有写任何表名也没有写数据库名,就是意思所有的数据库都可以用这个root账户访问

添加新的远程登录用户
默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'admin123' WITH GRANT OPTION;
flush privileges;//让刚刚修改的权限生效
然后接下来就是重启mysql服务,再次进入到mysql,用查询语句查看user表,如下所示:

如果需要使用外部工具链接mysql
则需要关闭防火墙
systemctl stop firewalld
然后查看状态
systemctl status firewalld

默认配置文件路径:
配置文件:/etc/my.cnf
日志文件:/var/log//var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid



------------用户管理-----------
查看MYSQL数据库中所有用户
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

查看数据库中具体某个用户的权限
mysql> show grants for 'admin'@'%';

查看user表结构 需要具体的项可结合表结构来查询
mysql> desc mysql.user;


远程访问设置
创建一个普通用户 sa ,密码是 some_pass
CREATE USER 'sa'@'%' IDENTIFIED BY 'some_pass';

给这个用户授予 SELECT,INSERT,UPDATE,DELETE 的远程访问的权限,这个账号一般用于提供给实施的系统访问
GRANT SELECT,INSERT,UPDATE,DELETE  ON *.* TO 'sa'@'%';

创建一个管理员用户 admin 账号 ,密码是 some_pass
CREATE USER 'admin'@'%' IDENTIFIED BY 'some_pass';
给这个用户授予所有的远程访问的权限。这个用户主要用于管理整个数据库、备份、还原等操作。
GRANT ALL  ON *.* TO 'admin'@'%';

使授权立刻生效
flush privileges;

----------------更改数据存放目录-----------------

创建数据存放目录
home 目录下建立 data 目录

mkdir /home/data
把 MySQL 服务进程停掉
如果 MySQL 是启动的,要先关闭

mysqladmin -u root -p shutdown
移动数据到数据存放目录
/var/lib/mysql 整个目录移到 /home/data,执行

mv /var/lib/mysql /home/data
这样就把 MySQL 的数据文件移动到了 /home/data/mysql 下

修改 /etc/my.cnf 文件,

[mysqld]
datadir=/home/data/mysql
socket=/home/data/mysql/mysql.sock

[mysql]
socket=/home/data/mysql/mysql.sock
修改权限

chown -R mysql:mysql /home/data/mysql
重启后,如果不能启动 MySQL 服务,执行

vi  /etc/sysconfig/selinux
调整

SELINUX=permissive
保存设置,执行 reboot 重启生效

开机自起
查看 MySQL 服务是否开机启动

[root@localhost ~]# systemctl is-enabled mysql.service;echo $?
enabled
0
如果是 enabled 则说明是开机自动,如果不是,执行

chkconfig --levels 235 mysqld on

设置字符集
一般的,为了支持中文,我们应该讲字符集设为 UTF-8, 执行

SHOW VARIABLES LIKE 'character%';
查看当前 MySQL 字符集

mysql>  SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
可以看到默认服务器的字符器是 latin1 ,对中文不友好。
修改 /etc/my.cnf 文件,添加字符集的设置

[mysqld]   
character_set_server = utf8

[mysql]
default-character-set = utf8
重启 MySQL ,可以看到字符集已经修改了
为了表示 (Emoji 表情)等字符 统一把 mysql字符集改成 utf8mb4
  1. [mysqld]
  2. character_set_server = utf8mb4
  3. collation_server = utf8mb4_unicode_ci
  4. init_connect='SET NAMES utf8mb4'

  5. [mysql]
  6. default-character-set = utf8mb4
复制代码
但重新启动后,character_set_system 一直没改过来
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

这里没再修改,以后建表 建库都明确指定字符集 utf8mb4



其他常用配置配置

调整 MySQL 运行参数,修改 /etc/my.cnf 文件,常用配置如下:

  1. [mysqld]   
  2. basedir      = path          # 使用给定目录作为根目录(安装目录)。
  3. datadir      = path          # 从给定目录读取数据库文件。
  4. pid-file     = filename      # 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统);


  5. socket = /tmp/mysql.sock     # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)
  6. port             = 3306      # 指定MsSQL侦听的端口
  7. key_buffer       = 384M      # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。
  8.                                索引块是缓冲的并且被所有的线程共享,key_buffer的大小视内存大小而定。
  9. table_cache      = 512       # 为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销
  10. sort_buffer_size = 2M        # 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。
  11.                                注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB
  12. read_buffer_size = 2M        # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
  13. query_cache_size = 32M       # 指定MySQL查询结果缓冲区的大小
  14. read_rnd_buffer_size    = 8M # 改参数在使用行指针排序之后,随机读用的。
  15. myisam_sort_buffer_size =64M # MyISAM表发生变化时重新排序所需的缓冲
  16. thread_concurrency      = 8 # 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2
  17. thread_cache            = 8 # #缓存可重用的线程数
  18. skip-locking                 # 避免MySQL的外部锁定,减少出错几率增强稳定性。
  19. [mysqldump]
  20. max_allowed_packet      =16M # 服务器和客户端之间最大能发送的可能信息包

  21. [myisamchk]
  22. key_buffer   = 256M
  23. sort_buffer = 256M
  24. read_buffer = 2M
  25. write_buffer = 2M
复制代码

其他可选参数:

back_log = 384

指定MySQL可能的连接数量。 当MySQL主线程在很短时间内接收到非常多的连接请求,该参数生效,主线程花费很短时间检查连接并且启动一个新线程。 back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。 试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。

max_connections = n

MySQL服务器同时处理的数据库连接的最大数量(默认设置是100)。超过限制后会报 Too many connections 错误

key_buffer_size = n

用来存放索引区块的RMA值(默认设置是8M),增加它可得到更好处理的索引(对所有读和多重写)

record_buffer:

每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。 如果你做很多顺序扫描,你可能想要增加该值。默认数值是131072(128K)

wait_timeout:

服务器在关闭它之前在一个连接上等待行动的秒数。

interactive_timeout:

服务器在关闭它前在一个交互连接上等待行动的秒数。 一个交互的客户被定义为对 mysql_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。 默认数值是28800,可以把它改为3600。

skip-name-resolve

禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。 但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!

log-slow-queries = slow.log

记录慢查询,然后对慢查询一一优化

skip-innodb

skip-bdb

关闭不需要的表类型,如果你需要,就不要加上这个

备份、还原方法1:命令行备份
mysqldump --socket=/home/data/mysql/mysql.sock --single-transaction=TRUE  -u root -p emsc > emsc.sql
还原
mysql --socket=/home/data/mysql/mysql.sock  -u root -p emsc < emsc.sql

方法2:
Workbench备份

还原


http://www.centoscn.com/mysql/2016/0315/6844.html





回复

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
沙发
 楼主| 发表于 2017-7-27 16:10:33 | 只看该作者


mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_unicode_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+
10 rows in set (0.00 sec)



[mysqld]

character-set-client-handshake = FALSE
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

[mysql]
default-character-set = utf8mb4

[client]
default-character-set = utf8mb4




回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-4-24 23:01 , Processed in 0.060655 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表