一.mysql在centos7下的安装
- 注意:安装与卸载中,⽤⼾全部切换成为root
- 初期练习,mysql不进⾏⽤⼾管理,全部使⽤root进⾏
1.卸载内置环境
1-1卸载不要的环境
[root@vm-0-3-centos ~]$ ps ajx |grep mariadb # 先检查是否有mariadb存在 13134 14844 14843 13134 pts/0 14843 s+ 1005 0:00 grep --color=auto mariadb 19010 19187 19010 19010 ? -1 sl 27 16:55 /usr/libexec/mysqld -- basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin -- log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock [root@vm-0-3-centos ~]$ systemctl stop mariadb.service # 停⽌mariadb服务 ==== authenticating for org.freedesktop.systemd1.manage-units === authentication is required to manage system services or units. authenticating as: root password: ==== authentication complete === [root@vm-0-3-centos ~]$ ps axj |grep mariadb# 停⽌完成 13134 14976 14975 13134 pts/0 14975 s+ 1005 0:00 grep --color=auto mariadb
ps axj | grep mariadb查看进程,systemctl stop mariadb停止服务,mariadb 是 mysql 的开源分支,可保留可卸载,根据实际需求决定。
1-2检查系统安装包
[root@vm-0-3-centos ~]$ rpm -qa | grep mariadb or [whb@vm-0-3-centos ~]$ rpm -qa | grep mysql ... # 下⾯是打印出来的mysql的样例, [root@bite-alicloud mysql]# rpm -qa | grep mysql mysql-community-common-5.7.41-1.el7.x86_64 mysql-community-server-5.7.41-1.el7.x86_64 mysql57-community-release-el7-11.noarch mysql-community-client-5.7.41-1.el7.x86_64 mysql-community-libs-5.7.41-1.el7.x86_64
1-3卸载这些默认安装包
#卸载显⽰出来的mariadb/mysql安装包 [rooot@vm-0-3-centos ~]$ sudo yum remove mariadb # 还是试着将上⾯的包都⼀个⼀个卸载吧 备份/etc/my.cnf,备份/var/lib/mysql数据
1-4获取mysql官⽅yum源
#1. 获取mysql官⽅yum源 http://repo.mysql.com/ # ⼀定要看下⾯的⽂字!如果后⾯⾃⼰安装不成功,就看看这个 # 注意:最好安装和⾃⼰系统⼀致的mysql版本,否则可能会存在软件兼容性问题 # 查看⾃⼰的系统版本 # [root@vm-0-3-centos ~]# cat /etc/redhat-release # centos linux release 7.8.2003 (core) # 可以进⼊ http://repo.mysql.com/, 找⼀下和⾃⼰版本⼀致的资源 # 下载到你的本地,然后上传到你的linux服务器
下载 mysql的 yum源包:
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
2.安装mysql yum 源
# 安装前 [root@vm-0-3-centos 9.9]$ ls mysql57-community-release-el7-10.noarch.rpm 查看你本地的yum源 [我的和你的肯定不同,但是没有mysql相关的yum源] [root@vm-0-3-centos 9.9]$ ls /etc/yum.repos.d/ -al total 88 drwxr-xr-x. 2 root root 4096 apr 9 15:43 . drwxr-xr-x. 106 root root 12288 apr 12 10:50 .. -rw-r--r-- 1 root root 2523 dec 26 19:31 centos-base.repo -rw-r--r-- 1 root root 614 nov 10 18:42 centos-base.repo_bak -rw-r--r-- 1 root root 2523 jun 16 2018 centos-base.repo.bak -rw-r--r-- 1 root root 1309 apr 8 2020 centos-cr.repo -rw-r--r-- 1 root root 649 apr 8 2020 centos-debuginfo.repo -rw-r--r-- 1 root root 230 nov 10 18:42 centos-epel.repo -rw-r--r-- 1 root root 314 apr 8 2020 centos-fasttrack.repo -rw-r--r-- 1 root root 630 apr 8 2020 centos-media.repo -rw-r--r-- 1 root root 998 dec 11 2018 centos-sclo-scl.repo -rw-r--r-- 1 root root 971 oct 29 2018 centos-sclo-scl-rh.repo -rw-r--r-- 1 root root 1331 apr 8 2020 centos-sources.repo -rw-r--r-- 1 root root 7577 apr 8 2020 centos-vault.repo -rw-r--r-- 1 root root 616 apr 8 2020 centos-x86_64-kernel.repo -rw-r--r-- 1 root root 1919 apr 8 23:57 docker-ce.repo -rw-r--r-- 1 root root 1050 nov 1 04:33 epel.repo -rw-r--r-- 1 root root 1149 nov 1 04:33 epel-testing.repo -rw-r--r-- 1 root root 173 dec 9 16:08 google-chrome.rep -rw-r--r-- 1 root root 616 apr 8 2020 centos-x86_64-kernel.repo -rw-r--r-- 1 root root 1919 apr 8 23:57 docker-ce.repo -rw-r--r-- 1 root root 1050 nov 1 04:33 epel.repo -rw-r--r-- 1 root root 1149 nov 1 04:33 epel-testing.repo -rw-r--r-- 1 root root 173 dec 9 16:08 google-chrome.repo -rw-r--r-- 1 root root 1627 apr 5 2017 mysql-community.repo#安装了mysql yum源 -rw-r--r-- 1 root root 1663 apr 5 2017 mysql-community-source.repo
看看能不能正常⼯作
[root@vm-0-3-centos 9.9]$ yum list |grep mysql repository epel is listed more than once in the configuration mysql57-community-release.noarch el7-10 installed akonadi-mysql.x86_64 1.9.2-4.el7 base anope-mysql.x86_64 2.0.9-3.el7 epel apr-util-mysql.x86_64 1.5.2-6.el7 base calligra-kexi-driver-mysql.x86_64 2.9.10-2.el7 epel collectd-mysql.x86_64 5.8.1-1.el7 epel dmlite-plugins-mysql.x86_64 1.14.2-1.el7 epel dovecot-mysql.x86_64 1:2.2.36-8.el7 base
3.进行安装
3-1安装mysql服务
[root@vm-0-3-centos 9.9]$ sudo yum install -y mysql-community-server [sudo] password for whb: loaded plugins: aliases, auto-update-debuginfo, fastestmirror, protectbase repository epel is listed more than once in the configuration ... installing : mysql-community-common-5.7.33-1.el7.x86_64 #公共模块 installing : mysql-community-libs-5.7.33-1.el7.x86_64 #库 installing : mysql-community-client-5.7.33-1.el7.x86_64 #客⼾端 installing : mysql-community-server-5.7.33-1.el7.x86_64 #服务器 ... #安装了服务和客⼾端
3-2查看配置⽂件和数据存储位置
[root@vm-0-3-centos 9.9]$ ls /etc/my.cnf /etc/my.cnf [root@vm-0-3-centos 9.9]$ sudo ls /var/lib/mysql ....
3-3启动服务
[root@vm-0-3-centos 9.9]$ systemctl start mysqld.service ==== authenticating for org.freedesktop.systemd1.manage-units === authentication is required to manage system services or units. authenticating as: root password: ==== authentication complete ===
3-4查看启动服务
[root@vm-0-3-centos 9.9]$ ps axj |grep mysqld 1 23183 23182 23182 ? -1 sl 27 0:00 /usr/sbin/mysqld -- daemonize --pid-file=/var/run/mysqld/mysqld.pid 13134 23243 23242 13134 pts/0 23242 s+ 1005 0:00 grep --color=auto mysqld
4.进行登录
4-1登陆⽅法⼀
#获取临时root密码 [root@vm-0-3-centos 9.9]$ sudo grep 'temporary password' /var/log/mysqld.log 2021-04-12t03:23:46.153263z 1 [note] a temporary password is generated for root@localhost: ylmalt:v+5l* #使⽤临时密码登录 [root@vm-0-3-centos 9.9]$ mysql -uroot -p enter password: #判断修改密码时候新密码是否符合当前的策略,不满⾜报错,不让修改,关闭它 #安全强度,默认为中,即1,要求必须包含 数字、符号、⼤⼩写字⺟,⻓度⾄少为8位 mysql> set global validate_password_policy=0; query ok, 0 rows affected (0.00 sec) #密码最⼩⻓度 mysql> set global validate_password_length=1; query ok, 0 rows affected (0.00 sec) #修改本地登录密码,暂不授权远程登录 mysql> alter user 'root'@'localhost' identified by 'qwer@wu.888'; query ok, 0 rows affected (0.00 sec) mysql> flush privileges; query ok, 0 rows affected (0.00 sec) #如果你安装的最新的mysql,没有所谓的临时密码,root默认没有密码
4-2 登陆⽅法⼆
# 如果你安装的最新的mysql,没有所谓的临时密码,root默认没有密码 # 试着直接client登陆⼀下
4-3 登陆⽅式三
[root@vm-0-3-centos 9.9]# vim /etc/my.cnf # 打开mysql配置⽂件 在[mysqld]最后⼀栏配置(不知道是什么,就放在配置⽂件最后) 加⼊: skip-grant-tables 选项, 并保存退出 [root@vm-0-3-centos 9.9]# systemctl restart mysqld # 重启mysql服务 # 登陆成功 root@vm-0-3-centos 9.9]# mysql -uroot welcome to the mysql monitor. commands end with ; or \g. your mysql connection id is 2 server version: 5.7.41 mysql community server (gpl) copyright (c) 2000, 2023, oracle and/or its affiliates. oracle is a registered trademark of oracle corporation and/or its affiliates. other names may be trademarks of their respective owners. type 'help;' or '\h' for help. type '\c' to clear the current input statement. mysql>
5.设置配置文件
5-1设置开机启动【可以不设】
得先退出mysql在进行
#开启开机⾃启动 systemctl enable mysqld systemctl daemon-reload
5-2配置my.cnf
#配置一下my.conf,主要是数据库客户端和服务器的编码格式 [root@vm-0-3-centos 9.9]$ cat /etc/my.cnf # for advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html [mysqld] # # remove leading # and set to the amount of ram for the most important data # cache in mysql. start at 70% of total ram for dedicated server, else 10%. # innodb_buffer_pool_size = 128m # # remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # remove leading # to set options mainly useful for reporting servers. # the server defaults are faster for transactions and fast selects. # adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128m # sort_buffer_size = 2m # read_rnd_buffer_size = 2m port=3306 character-set-server=utf8 default-storage-engine=innodb datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character-set-server=utf8 default-storage-engine=innodb log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid skip-grant-tables 配置完毕,重启即可
设置 mysql 的字符集为 utf-8,令其支持中文:
vim /etc/my.cnf
重启一下 mysql,令配置生效:
重启 mysql:service mysqld restart
or
停止 mysql:service mysqld stop
启动 mysql:service mysqld start
5-3常⻅问题:
mysql 已经配置了客⼾端服务器utf8编码,但是⽆法输⼊中⽂ 确保您在终端命令⾏中可以输⼊中⽂ [whb@vm-0-3-centos ~]$ env |grep lang lang=en_us.utf8 安装遇到秘钥过期的问题: failing package is: mysql-community-client-5.7.39-1.el7.x86_64 gpg keys are configured as: file:///etc/pki/rpm-gpg/rpm-gpg-key-mysql 解决⽅案: rpm --import https://repo.mysql.com/rpm-gpg-key-mysql-2022
二.mysql在ubuntu(22.04)下的安装
ubuntu 22.04 安装 mysql 步骤(纯步骤)
1. 更新软件源
sudo apt update sudo apt upgrade -y
2. 安装 mysql 服务器
sudo apt install mysql-server -y
3. 启动服务并设置开机自启
sudo systemctl start mysql sudo systemctl enable mysql
4. 运行安全初始化脚本
sudo mysql_secure_installation (按提示设置密码、移除匿名用户、禁止root远程登录等)
5. 登录 mysql(默认sudo方式)
sudo mysql -u root
alter user 'root'@'localhost' identified with mysql_native_password by '你设置的密码';
一旦你执行这个命令就不花再有免密登录这一说相当于你强制mysql进行密码登录
6. 修改root为密码登录
alter user 'root'@'localhost' identified with mysql_native_password by '你的密码'; flush privileges; exit;
7. (可选)用密码登录验证
mysql -u root -p
三.centos7 vs ubuntu22.04 mysql安装完整区别
1. 包管理器
centos7:yum,必须手动下载官方源
ubuntu22.04:apt,系统自带源,不用配源直接装
2. 安装命令
centos7: yum install mysql-community-server
ubuntu22.04: apt install mysql-server
3. 初始登录方式(核心区别)
centos7:自带临时初始密码,直接 mysql -u root -p 登录
ubuntu22.04:无密码,只能sudo免密登录,必须手动改密码
4. 配置文件路径
centos7: /etc/my.cnf
ubuntu22.04: /etc/mysql/mysql.conf.d/mysqld.cnf
5. 系统自带冲突库
centos7:自带mariadb,必须先卸载
ubuntu22.04:无冲突库,直接安装
6. 可选mysql版本
centos7:可自由装 5.7 / 8.0
ubuntu22.04:官方源只能装8.0,装不了5.7
7. 防火墙端口
centos7:默认防火墙开启,3306端口默认放行
ubuntu22.04:默认ufw防火墙关闭,3306端口不放行
8. 安全脚本
centos7:安装后必须手动执行 mysql_secure_installation
ubuntu22.04:推荐执行,但不强制,不改密码也能sudo登录
四.解释:
为什么 centos 7 和 ubuntu 22.04 安装 mysql 差距这么大?
同样是安装 mysql,ubuntu 22.04 一条命令就能搞定,centos 7 却要手动加源、卸载冲突包、配置一堆东西,为什么两者差异这么大?
一、核心根源:发行版的软件源策略不同
1. ubuntu 22.04:默认源直接集成 mysql
ubuntu 属于 debian 系 发行版,它的官方 apt 软件源中,默认就包含了 mysql 8.0 的官方适配包( mysql-server )。
- 你只需要执行 sudo apt update && sudo apt install mysql-server ,就能直接完成安装,不需要手动添加第三方源。
- 系统会自动处理所有依赖,甚至帮你完成初始化、启动服务、设置开机自启。
- 同时 ubuntu 对 mysql 做了定制化适配,比如默认使用 auth_socket 认证,让 sudo mysql 可以免密登录,进一步降低了上手门槛。
2. centos 7:默认源只有 mariadb,没有官方 mysql
- centos 属于 rhel 系 发行版,在 mysql 被 oracle 收购后,centos 7 的官方 yum 源彻底移除了官方 mysql 包,默认只提供 mariadb(mysql 的开源分支)。
- 如果你直接在 centos 7 执行 yum install mysql-server ,要么找不到包,要么会自动安装 mariadb,而不是你想要的官方 mysql。
- 想要安装官方 mysql,必须手动下载并添加 mysql 官方 yum 源,还要先卸载系统自带的 mariadb 相关包(避免端口、配置冲突),才能正常安装。
- 整个过程需要手动处理源、依赖、冲突,步骤自然比 ubuntu 繁琐很多。
二、包管理器的生态差异
1. apt (ubuntu):开箱即用的丰富生态
ubuntu 的 apt 包管理器,软件源覆盖范围极广,对常用开源软件(比如 mysql、nginx、php)的支持非常完善,很多工具都默认集成在官方源中,用户几乎不需要手动配置源。
同时 apt 的依赖解析能力更强,安装时会自动补全所有需要的环境、库文件,用户不需要额外安装依赖。
2. yum (centos 7):保守的企业级源
centos 7 定位是企业级服务器系统,它的 yum 源以稳定、保守为核心原则,只保留经过严格测试的系统级软件,不会主动集成第三方商业软件(比如 oracle 旗下的 mysql)。
- 企业级系统更倾向于使用开源分支 mariadb 来替代 mysql,因此官方源不会维护 mysql 包。
- yum 对依赖的处理相对严格,手动加源后还需要手动导入 gpg 密钥、处理依赖冲突,进一步增加了操作步骤。
3.默认认证方式的差异(遇到的免密问题)
除了安装步骤,两者的默认登录认证逻辑也完全不同,这也是很多同学觉得「差距大」的关键:
- ubuntu 22.04:默认使用 auth_socket 认证,只要你是 linux 的 root 用户(通过 sudo 提权),就可以直接用 sudo mysql 免密登录 mysql,不需要输入数据库密码,对新手非常友好。
- centos 7:默认使用 mysql_native_password 密码认证,安装时会生成临时初始密码,必须用 mysql -u root -p 输入密码才能登录,没有「免密」一说,安全性更高,但上手更复杂。
4.总结:为什么 ubuntu 更省心?
维度 ubuntu 22.04 centos 7
软件源 默认集成 mysql 8.0,直接安装 默认只有 mariadb,需手动加 mysql 源
包管理器 apt 生态丰富,自动处理依赖 yum 源保守,需手动处理依赖/冲突
认证方式 auth_socket 免密登录,新手友好 mysql_native_password 密码登录,更安全
安装步骤 1 条命令完成 卸载 mariadb → 加源 → 安装 → 改密码
简单来说:ubuntu 是桌面级易用性优先,centos 7 是企业级稳定优先,两者的定位不同,直接导致了 mysql 安装体验的巨大差异。
补充:centos 7 也能像 ubuntu 一样一键安装吗?
可以,但需要手动配置:
1. 卸载 mariadb: sudo yum remove -y mariadb-libs
2. 添加 mysql 官方 yum 源: sudo yum localinstall -y mysql80-community-release-el7-7.noarch.rpm
3. 安装 mysql: sudo yum install -y mysql-community-server
4. 启动服务并初始化: sudo systemctl start mysqld && sudo systemctl enable mysqld
只是这个过程需要手动操作,不像 ubuntu 那样开箱即用。
总结
到此这篇关于mysql数据库在centos7和ubuntu22.04环境下安装步骤的文章就介绍到这了,更多相关centos7和ubuntu安装mysql内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论