下载并安装mysql的YUM源
1、下载mysql的YUM源:wget -P /home/temp http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm(wget命令:http://man.linuxde.net/wget)
安装mysql的YUM源:rpm -ivh mysql57-community-release-el7-11.noarch.rpm
检查mysql的YUM源是否安装成功:yum repolist enabled | grep "mysql.*-community.*"
查看当前的启用的 MySQL 版本:yum repolist enabled | grep mysql
2、安装MySQL
yum install mysql-community-server
安装过程中一直输入"y"就可以了
或者加上参数 -y就不用手动输入y确认了
yum -y install mysql-community-server
3、测试
启动mysql服务:systemctl start mysqld
登录进Mysql(我的刚安装完时没有密码):mysql -uroot或mysql
如果出现错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
则说明mysql安装完后给root用户生成了一个默认密码,所以你需要使用密码登录。
查看mysql生成的默认密码:
为了加强安全性,MySQL5.7为root用户随机生成了一个密码,如果安装的是RPM包,则默认是在/var/log/mysqld.log中。
查看默认密码:grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p 回车 然后输入默认密码即可登录myql。
其他相关问题可参照:mysql5.7初始密码设置问题
4、mysql服务用到的命令:
systemctl start mysqld #启动mysqld
systemctl stop mysqld #停止mysqld
systemctl restart mysqld #重启mysqld
systemctl enable mysqld #设置开机启动
systemctl status mysqld #查看 MySQL Server 状态
5、mysql相关配置
设置密码
mysqladmin -u root password 'new-password'
或set password for 'root'@'localhost' = password('123456');
设置完密码之后就可以使用mysql -u root -p 命令来登录mysql数据库了
6、防火墙设置
远程访问 MySQL, 需开放默认端口号 3306.
查看是否已开放该端口
firewall-cmd --permanent --zone=public --list-ports
若没有则添加该端口
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=3306/udp
执行firewall-cmd --reload使最新的防火墙设置规则生效
之后可以使用telnet ip port命令查看远程访问是否ok
7、远程访问设置
创建一个普通用户 xx ,密码是xxx
CREATE USER 'xx'@'%' IDENTIFIED BY 'xxx';
给这个用户授予 SELECT,INSERT,UPDATE,DELETE 的远程访问的权限,这个账号一般用于提供给实施的系统访问
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'xx'@'%';
创建一个管理员用户 admin 账号 ,密码是 xxx
CREATE USER 'admin'@'%' IDENTIFIED BY 'xxx';
给这个用户授予所有的远程访问的权限。这个用户主要用于管理整个数据库、备份、还原等操作。
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;
8、设置字符集
一般的,为了支持中文,我们应该将字符集设为 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
关闭不需要的表类型,如果你需要,就不要加上这个
9、备份、还原
方法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
10、默认配置文件路径:
配置文件:/etc/my.cnf
日志文件:/var/log//var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid