CentOS7.x使用yum安装MySQL数据库
一、卸载Mariadb
- CentOS7.x将默认数据库MySQL替换成了Mariadb,下面使用yum进行安装MySQL
- 系统为:CentOS7.6.1810
- 最终安装MySQL版本:5.7.29
rpm -qa | grep mariadb | xargs rpm -e --nodeps
二、使用MySQL的官方repo源,安装MySQL
cd /usr/local/src
# 下载MySQL的官方repo源
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
# 安装Yum Repository
rpm -ivh mysql57-community-release-el7-10.noarch.rpm
# 查看可被安装的包
yum repolist enabled | grep mysql
# 安装MySQL服务器
yum -y install mysql-community-server #使用该条命令!
#yum -y install mysql-server mysql-devel
上面源无法下载时,也可以使用三、设置MySQL数据库密码 启动MySQLhttps://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
repo源。
systemctl start mysqld
查看MySQL状态
systemctl status mysqld
此时MySQL已经正常运行,需要找出root的密码
grep 'temporary password' /var/log/mysqld.log
如下图,其中初始密码为:
hC0AP<6gwX%f
,每个人安装好MySQL并且启动后的密码均不唯一,以你查看到的为准!(另外,必须以mysql -u root -p回车后输入此密码才行,如果嫌密码不好输入,直接复制粘贴过去也行。)文章图片
查找MySQL登陆密码
- 为防止新密码设置过于简单报错,可登陆MySQL之后第一时间进行以下操作
- mysql> set global validate_password_policy=0;
- mysql> set global validate_password_length=1;
- 如果使用复杂密码且符合规范,使用密码生成器生成,随机密码生成器,特殊符号中添加:
!,@,#,$,%,^,&,*
,密码长度为16。
# 登陆MySQL
mysql -u root -p(回车后输入上面查到的密码)
# 输入初始密码后,此时不能做任何事情,因为MySQL默认必须修改密码才能正常使用
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
修改完成后,退出重新登陆MySQL时,即可使用新密码!四、设置字符集为utf8 && 设置时区 1、使用新的密码登陆MySQL查看字符集与时区
# 查看字符集
mysql> show variables like 'char%';
# 查看时区
mysql> show variables like '%time_zone%';
文章图片
装完MySQL之后有两处字符集不为utf8 2、修改字符集、修改时区
vim /etc/my.cnf
在该文件最后一行添加
character-set-server=utf8
,如下文章图片
修改字符集为utf8
在该文件中的 [mysqld] 下面添加时区
# 东八区时区,北京时区
default-time-zone = '+8:00'
3、根据需要修改数据库表名大小写敏感
# 不区分大小写
lower_case_table_names=1
lower_case_table_names: 此参数不可以动态修改,必须重启数据库
lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names=1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的
# 查看当前数据库大小写是否区分
show variables like 'lower_case_table_names';
4、
/etc/my.cnf
配置文件示例
# 字符集设置
character_set_server=utf8
# 东八区时区,北京时区
default-time-zone = '+8:00'# 默认开启事件
event_scheduler=ON#自增长起始值
auto-increment-offset = 1
#自增长步长
auto-increment-increment = 2
#临时表大小
tmp_table_size = 64M
# 不区分大小写
lower_case_table_names=1## 以下为配置主从设置
#数据库唯一ID,主从的标识号绝对不能重复。
server-id=1
#开启bin-log,并指定文件目录和文件名前缀
#log-bin=mysql-bin
#需要同步liting数据库。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)。
binlog-do-db=db1
binlog-do-db=db2
#不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开。
binlog-ignore-db=mysql
#确保binlog日志写入后与硬盘同步
sync_binlog = 1
#跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
binlog_checksum = none
#bin-log日志文件格式,设置为MIXED可以防止主键重复。
binlog_format = mixed
#二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。
expire_logs_days= 10
#如果当前的日志大小达到max_binlog_size,还会自动创建新的二进制日志
max_binlog_size= 100M
#表示 slave 将复制事件写进自己的二进制日志
log_slave_updates= 1
#跳过主从复制中遇到的所有错误或指定类型的错误,避免 slave 端复制中断。
slave-skip-errors = all
5、重启数据库
systemctl restart mysqld
【CentOS7.x使用yum安装MySQL数据库】字符集修改完成后,重启MySQL,登陆MySQL查看下字符集,如下
文章图片
修改完成后 五、移除MySQL的repo源
为了防止每次进行yum操作时其自动更新,移除MySQL的repo。
yum -y remove mysql57-community-release-el7-10.noarch
六、允许远程连接MySQL
查看当前用户权限:1、更新root账号信息,允许任何主机以root账号登陆(推荐)show grants;
mysql> use mysql;
mysql> select host,user from user;
mysql> update user set host='%' where user='root';
2、任何主机以
dev
账号登陆
mysql> GRANT ALL PRIVILEGES ON *.* TO 'dev'@'%' IDENTIFIED BY 'new password' WITH GRANT OPTION;
3、指定主机以
root
账号登陆
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@’192.168.1.120’ IDENTIFIED BY 'new password' WITH GRANT OPTION;
4、新增用户并授权
# 创建用户
mysql> create user test@'%' identified by '123456';
# 授权
mysql> grant all privileges on test.* to test@'%';
5、进行以上任何操作,均需刷新权限
mysql> flush privileges;
七、MySQL自启
# 查看MySQL是否自启
systemctl is-enabled mysqld
如下如,为enabled
时,MySQL为自启(安装MySQL之后,默认为自启,因此此步骤中不需要重复开启)
文章图片
查看MySQL是否自启 八、防火墙放行3306端口
如果你的防火墙已经关闭,可忽略此操作。
# 永久开放3306端口
firewall-cmd --permanent --zone=public --add-port=3306/tcp
# 重启防火墙
systemctl restart firewalld
# 检测设定是否生效
iptables -L -n | grep 3306
九、MySQL5.25使用过程中出现的问题以及解决办法 9-1、在MySQL5.7.x的版本中,可能会出现
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
,问题。[1]
问题原因:可能使用了低版本Navicat刷脚本时遇到的问题问题解决:
1、在
my.cnf
中[mysqld]
下添加sql_mode
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION如下图
文章图片
添加sql_mode 2、修改完配置文件后,重启MySQL
systemctl restart mysqld3、使用SQLyog刷脚本 文章参考
- centos7下安装mysql(完整配置)
- 修改MySQL的时区,涉及参数time_zone
- 一次JDBC与MySQL因“CST”时区协商误解导致时间差了14或13小时的排错经历
- CentOS7 yum 安装与配置MySQL5.7
- 让MySql支持Emoji表情
- 修改mysql数据库utf8编码为utf8mb4支持emoji表情存储
- mysql新建用户,修改权限
- [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c ?
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 使用协程爬取网页,计算网页数据大小