MySQL安装与配置-CentOS7
2019-03-19 本文已影响0人
wanlong1003
安装步骤:
- 添加yum存储库
在 http://dev.mysql.com/downloads/repo/yum/ 下载相应操作系统的发行包
使用 rpm -Uvh platform-and-version-specific-package-name.rpm 安装存储库包,该包中包括了 mysql-community.repo文件
- 查看存储库状态 yum repolist all | grep mysql
- 默认存储库中启用的是最新版本的mysql,如果需要安装指定版本的,需要修改/etc/yum.repos.d/mysql-community.repo文件,如下
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1 #是否启用
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
- 然后启用该存储库 yum repolist enabled | grep mysql
- 安装mysql社区版 yum install mysql-community-server
- 启动mysql 服务 systemctl start mysqld.service
启动初始化
Mysql5.7开始,如果服务器数据目录为空,启动服务时mysql主要做了以下工作
- 服务器初始化
- 在数据目录中生成SSL证书和密钥文件
- 安装并启用插件 validate_passwork
- 超级账户 root@localhost已创建,密码保存在日志文件中,通过下面的命令查看
grep 'temporary password' /var/log/mysqld.log
roo账户设置
使用 mysql -uroot -p 命令进入mysql命令行,默认密码使用 grep 'temporary password' /var/log/mysqld.log 查询
#修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
#切换数据库
mysql> use mysql
#设置root用户可远程登陆
mysql> update user set host='%' where user='root'
数据目录迁移
默认的数据库目录在 /var/lib/mysql 一般我们要吧数据放在独立的磁盘中,比如 /mnt/data/mysql
- 移动 /var/lib/mysql 到 /mnt/data/mysql
- 修改文件夹权限: chown -R mysql:mysql /mnt/data/mysql
- 修改配置文件/etc/my.cnf 中的 : datadir=/mnt/data/mysql
- 设置SELinux: chcon -R -t mysqld_db_t /mnt/data/mysql
启动MySQL服务,启动成功即可清理 /var/lib/mysql, 注意保留 mysql.sock*文件
防火墙设置
firewall-cmd --zone=public --add-port=3306/tcp --permanent #开启防火墙规则
firewall-cmd --reload #重新载入
配置文件 my.cnf
[mysqld]
datadir=/mnt/data/mysql #数据路径
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
bind-address=0.0.0.0 #绑定的IP
port=3306 #绑定的端口
character-set-server=utf8 #服务器端字符集
lower_case_table_names=1 #表名不区分大小写
#解决 sql_mode=only_full_group_by 的错误
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
# 解决长时间不访问连接失效的问题
interactive_timeout=259200
wait_timeout=259200
[mysql]
default-character-set=utf8 #客户端字符集
扩展阅读:
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
- 数据库名与表名是严格区分大小写的;
- 表的别名是严格区分大小写的;
- 列名与列的别名在所有的情况下均是忽略大小写的;
- 变量名也是严格区分大小写的;