05-安装 MySQL5.7
1. 检查工作#
- 检查当前系统是否安装过 MySQL
- [CentOS6]
rpm -qa|grep mysql
→rpm -e --nodeps mysql-libs
- [CentOS7]
rpm -qa|grep mariadb
→rpm -e --nodeps mariadb-libs
- [CentOS6]
- 检查当前 MySQL 依赖环境
- libaio:
rpm -qa|grep libaio
- net-tools:
rpm -qa|grep net-tools
- libaio:
- 检查 /tmp 文件夹权限
2. 安装#
在 MySQL 的安装文件目录下执行(必须按照顺序):
rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm
3. 服务初始化#
为了保证数据库目录为与文件的所有者为 MySQL 登陆用户,如果你是以 root 身份运行 MySQL 服务,需要执行下面的命令初始化:mysqld --initialize --user=mysql
。
另外 --initialize
选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期,登陆后你需要设置一个新的密码。
查看密码:cat /var/log/mysqld.log
4. 服务启动+首次登陆#
- 启动:
systemctl start mysqld.service
- 关闭:
systemctl stop mysqld.service
- 状态:
systemctl status mysqld.service
- 重启:
systemctl restart mysqld.service
首次登陆通过 mysql -uroot -p
进行登录,在 Enter password 时录入初始化密码。进入之后,因为初始化密码默认是过期的,所以查看数据库会报错。需要修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
。设置完密码就可以用新密码登陆,正常使用数据库了。
5. 是否自启动#
查看 MySQL 是否自启动(默认自启动):systemctl list-unit-files | grep mysqld.service
如不是 enabled 可以运行如下命令设置自启动:systemctl enable mysqld.service
6. 字符集#
直接插入中文数据报错。
- 修改配置文件:
vim /etc/my.cnf
,在最后加上中文字符集配置:character_set_server=utf8
。 - 重新启动 MySQL:
systemctl restart mysqld.service
- 已生成的库表字符集如何变更
修改数据库的字符集 mysql> alter database mydb character set 'utf8'; 修改数据表的字符集 mysql> alter table testTab convert to character set 'utf8';
一定要注意!除了增加 character_set_server=utf8 到 my.cnf 外,已创建的库表还要单独修改字符集。
7. 远程登陆#
先确保有可以通过远程登录的账户。
user 表字段说明:
- host:表示连接类型
- % 表示所有远程通过 TCP 方式的连接
- localhost 本地方式通过命令行方式的连接 ,比如
mysql -u xxx -p xxx
方式的连接。
- user:表示用户名,同一用户通过不同方式链接的权限是不一样的。
- password:密码。所有密码串通过 password(明文字符串) 生成的密文字符串。加密算法为 MYSQLSHA1,不可逆。MySQL 5.7 的密码保存到 authentication_string 字段中而不再使用 password 字段。
如果测试的时候,还是连接不上,看看防火墙。
systemctl stop firewalld.service # 停止firewall
systemctl disable firewalld.service # 禁止firewall开机启动
systemctl restart iptables.service # 重启防火墙使配置生效
systemctl enable iptables.service # 设置防火墙开机启动
详细关于防火墙:https://www.cnblogs.com/yyxq/p/10551274.html
8. sql_mode#
sql_mode 是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题。
查看 sql_mode:show variables like 'sql_mode';
sql_mode 常用值如下:set sql_mode='ONLY_FULL_GROUP_BY';
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?