CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用MariaDB代替了,MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL受权许可。开发这个分支的缘由之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,所以社区采用分支的方式来避开这个风险。MariaDB的目的是彻底兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。html
方法一:经过yum来进行mysql的安装mysql
因为我安装的CentOS7.4默认安装了MariaDB,因此我只须要启动mariadb数据库就能够正常使用mysql了linux
(安装mariadb:yum install mariadb-server mariadb)sql
systemctl start mariadb数据库
mariadb数据库的相关命令是:
systemctl start mariadb #启动MariaDB
systemctl stop mariadb #中止MariaDB
systemctl restart mariadb #重启MariaDB
systemctl enable mariadb #设置开机启动vim
安装mariadb后显示的也是 MariaDB [(none)]> ,可能看起来有点不习惯缓存
接下来咱们从新安装MySQL服务器
一、卸载mariadb并发
yum list installed | grep mariadb #检查mariadb是否已安装socket
yum -y remove mariadb* #所有卸载
二、下载并安装mysql的YUM源
下载mysql的YUM源:wget -P /home/lisonglin http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm(wget命令:http://man.linuxde.net/wget)
因为咱们是下载到/home/lisonglin目录下,因此先切换到该目录下:cd /home/lisonglin
安装mysql的YUM源:rpm -ivh mysql57-community-release-el7-11.noarch.rpm
检查mysql的YUM源是否安装成功:yum repolist enabled | grep "mysql.*-community.*"
看到上图所示表示安装成功
选择要启用的mysql版本
查看mysql版本,执行:yum repolist all | grep mysql
能够看到 5.5, 5.6,8.0 版本是默认禁用的
能够经过相似下面的语句来启动或禁用某些版本
yum-config-manager --enable mysql57-community
yum-config-manager --disable mysql56-community
或者经过修改vim /etc/yum.repos.d/mysql-community.repo文件,改变默认安装的mysql版本。好比要安装5.6版本,将5.7源的enabled=1改为enabled=0,而后再将5.6源的enabled=0改为enabled=1便可。
注意: 任什么时候候,只能启用一个版本。
查看当前的启用的 MySQL 版本:yum repolist enabled | grep mysql
三、安装MySQL
yum install mysql-community-server
安装过程当中一直输入"y"就能够了,当出现下面的结果时,就表明mysql数据库安装成功了
四、测试
启动mysql服务:systemctl start mysqld
登陆进Mysql(个人刚安装完时没有密码):mysql -uroot或mysql
若是出现错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
则说明mysql安装完后给root用户生成了一个默认密码,因此你须要使用密码登陆。
mysql -uroot -p 回车 而后输入默认密码便可登陆myql。
关于如何查看默认密码,能够参考:CentOS7.4中安装了Mysql5.7以后如何查看默认密码
可能用到的命令:
systemctl start mysqld #启动mysqld
systemctl stop mysqld #中止mysqld
systemctl restart mysqld #重启mysqld
systemctl enable mysqld #设置开机启动
systemctl status mysqld #查看 MySQL Server 状态
五、mysql相关配置
设置密码
mysqladmin -u root password 'new-password'
或set password for 'root'@'localhost' = password('123456');
设置完密码以后就可使用mysql -u root -p 命令来登陆咱们的mysql数据库了
防火墙设置
远程访问 MySQL, 需开放默认端口号 3306.
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=3306/udp
执行firewall-cmd --reload使最新的防火墙设置规则生效
远程访问设置
建立一个普通用户 sa ,密码是123456
CREATE USER 'sa'@'%' IDENTIFIED BY '123456';
给这个用户授予 SELECT,INSERT,UPDATE,DELETE 的远程访问的权限,这个帐号通常用于提供给实施的系统访问
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'sa'@'%';
建立一个管理员用户 admin 帐号 ,密码是 123456
CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
给这个用户授予全部的远程访问的权限。这个用户主要用于管理整个数据库、备份、还原等操做。
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
设置用户 root 能够在任意 IP 下被访问:
grant all privileges on *.* to root@"%" identified by "新密码";
设置用户 root 能够在本地被访问:
grant all privileges on *.* to root@"localhost" identified by "新密码";
使受权马上生效
flush privileges;
设置字符集
通常的,为了支持中文,咱们应该将字符集设为 UTF-8, 执行SHOW VARIABLES LIKE 'character%';
查看当前 MySQL 字符集
能够看到默认服务器的字符器是 latin1 ,对中文不友好。修改 /etc/my.cnf 文件,添加字符集的设置
[mysql]
default-character-set = utf8
[mysqld]
character_set_server = utf8
重启 MySQL ,能够看到字符集已经修改了
其余经常使用配置:
[mysqld] basedir = path # 使用给定目录做为根目录(安装目录)。 datadir = path # 从给定目录读取数据库文件。 pid-file = filename # 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); socket = /tmp/mysql.sock # 为MySQL客户程序与服务器之间的本地通讯指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件) port = 3306 # 指定MsSQL侦听的端口 key_buffer = 384M # key_buffer是用于索引块的缓冲区大小,增长它可获得更好处理的索引(对全部读和多重写)。 索引块是缓冲的而且被全部的线程共享,key_buffer的大小视内存大小而定。 table_cache = 512 # 为全部线程打开表的数量。增长该值能增长mysqld要求的文件描述符的数量。能够避免频繁的打开数据表产生的开销 sort_buffer_size = 2M # 每一个须要进行排序的线程分配该大小的一个缓冲区。增长这值加速ORDER BY或GROUP BY操做。 注意:该参数对应的分配内存是每链接独占!若是有100个链接,那么实际分配的总共排序缓冲区大小为100×6=600MB read_buffer_size = 2M # 读查询操做所能使用的缓冲区大小。和sort_buffer_size同样,该参数对应的分配内存也是每链接独享。 query_cache_size = 32M # 指定MySQL查询结果缓冲区的大小 read_rnd_buffer_size = 8M # 改参数在使用行指针排序以后,随机读用的。 myisam_sort_buffer_size =64M # MyISAM表发生变化时从新排序所需的缓冲 thread_concurrency = 8 # 最大并发线程数,取值为服务器逻辑CPU数量×2,若是CPU支持H.T超线程,再×2 thread_cache = 8 # 缓存可重用的线程数 skip-locking # 避免MySQL的外部锁定,减小出错概率加强稳定性。 [mysqldump] max_allowed_packet =16M # 服务器和客户端之间最大能发送的可能信息包 [myisamchk] key_buffer = 256M sort_buffer = 256M read_buffer = 2M 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=/var/lib/mysql/mysql.sock --single-transaction=TRUE -u root -p mysql> Solin.sql
还原
mysql --socket=/var/lib/mysql/mysql.sock -u root -p mysql< Solin.sql
参考:
https://blog.csdn.net/qq_32786873/article/details/78843362
https://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html
https://www.cnblogs.com/TeiSi/p/6560282.html
http://blog.csdn.net/whatlookingfor/article/details/52382472
http://www.linuxidc.com/Linux/2016-06/132676.htm