centos 手动安装mysql8
下载
官网太慢了,在清华镜像站下载:https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/
二进制版
二进制版是官方提供的预先编译好的版本
下载二进制版发行包
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.11-el7-x86_64.tar.gz
创建用户
useradd mysql
初始化
目录:
tar xvfz mysql-8.0.11-el7-x86_64.tar.gz cd mysql-8.0.11-el7-x86_64 ln -s $PWD /usr/local/mysql chown -R mysql:mysql /usr/local/mysql export PATH=$PATH:/usr/local/mysql/bin mkdir -p /var/log/mariadb chown -R mysql:mysql /var/log/mariadb mkdir -p /var/run/mariadb touch /var/log/mariadb/mariadb.log chown -R mysql:mysql /var/run/mariadb
数据库:
mysqld --initialize --user=mysql
- 注意这一行日志:
2018-04-25T08:19:15.332554Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: dCa0tyVgN1&o
检查配置
vi /etc/my.cnf
检查一下 /etc/my.cnf 中配置的 datadir 跟初始化时是否一样。
[mysqld] datadir=/var/lib/mysql [client] socket=/var/lib/mysql/mysql.sock
默认的datadir必须改成init的目录。
默认客户端是 /var/lib/mysql.sock方式,因此只能如下方式登录:
mysql -uroot -p --socket=/var/lib/mysql/mysql.sock
所以必须修改默认的客户端访问时使用自定义的sock,应用才可以访问。
配置服务
cp support-files/mysql.server /etc/init.d/mysqld chmod a+x /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on service mysqld start
如果报错,检查一下 /etc/my.cnf 中配置的 datadir 跟初始化时是否一样。
初始化数据表及权限
mysql_secure_installation
编译安装
如无必要,不要考虑编译安装方式,因为编译很慢,而且一旦遇到依赖冲突,解决起来非常麻烦。
什么是必要?
- 需要修改源码。
- 需要将自己的插件编译进去。
- 需要新版本,包管理器安装的版本太低。
- 二进制版本没有新版,这个一般不太可能,官方一般源码和与编译版本一起发布。
- 某些特别的linux发行版,没有对应的二进制分发包可用。
你想好了?那就开始了。。。。(准备3个小时)
安装依赖
yum install libaio -y yum install glibc-devel.i686 glibc-devel -y yum install gcc gcc-c++ cmake boost-devel openssl-devel ncurses-devel -y
下载源码包
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.11.tar.gz
编译
tar xvfz mysql-8.0.11.tar.gz cd mysql-8.0.11 cmake . \ -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/include/boost \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql # 以下过程非常缓慢 make && make install
后续的步骤和二进制差不多,只是在部分环节出现了一点问题。
创建用户
useradd mysql
初始化
目录:
chown -R mysql:mysql /usr/local/mysql mkdir -p /var/log/mariadb chown -R mysql:mysql /var/log/mariadb export PATH=$PATH:/usr/local/mysql/bin mkdir -p /var/run/mariadb touch /var/log/mariadb/mariadb.log chown -R mysql:mysql /var/run/mariadb
数据库:
mysqld --initialize --user=mysql
在这里我遇到了一个问题:
- 初始化失败:COLLATION 'utf8mb4_0900_ai_ci' is not valid for CHARACTER SET 'utf8'
这个问题在二进制版没有遇到,经过分析,按照下面官网配置修改配置文件:
[mysqld] character_set_server=latin1 collation_server=latin1_swedish_ci
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-1.html
重新初始化即可。
经过测试修改为如下也可以:
character-set-server = utf8 collation-server = utf8_general_ci
这样更接近实际情况,不过这个所谓mysql8 新特性的字符集"utf8mb4_0900_ai_ci" 为什么就报错呢?
推测 utf8mb4_0900_ai_ci
对应的字符集不是 utf8
,而是 utf8mb4
,因此最初使用 -DDEFAULT_CHARSET=utf8
参数编译,与mysql8默认使用 utf8mb4_0900_ai_ci
作为 collation字符集是冲突的。
- 我最初测试的时候贱兮兮的添加了一个cmake选项:
-DDEFAULT_CHARSET=utf8
,他正是罪魁祸首。
因此,要么修改默认字符集为 utf8mb4
让它自适应:
-DDEFAULT_CHARSET=utf8mb4 \
要么完整的配置这两个字符集为匹配的关联字符集:
-DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \
配置服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chmod a+x /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on service mysqld start
初始化数据表及权限
mysql_secure_installation
编译失败了怎么办?
首先找到原因,或者线索,安装需要的依赖,或者修改需要的环境。
清理现场:
make clean rm -f CMakeCache.txt
重新来过。
权限问题
mysql 8 的权限管理方式改变了,以前的方式可能不是很好用了。
mysql> create role app_read; Query OK, 0 rows affected (0.03 sec) mysql> grant all on *.* to app_read; Query OK, 0 rows affected (0.07 sec) mysql> create user root@'%' identified by 'dCa0tyVgN1&o';
彩蛋
如果你只是想看一下mysql8是个什么鬼,可以用docker启动:
docker run -de MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 --name mysql mysql:8.0.11
测试:
docker exec -ti mysql mysql -uroot -p
密码 123456 ,几分钟的事,砖头扔过来。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
第四届中间件性能挑战赛启动,50万奖金、赛题分析、重磅资料为你而来!
2018云栖大会南京峰会上,阿里巴巴研究员林昊正式发布了第四届阿里中间件性能挑战赛。挑战赛以开源项目为背景,核心技术为Dubbo和RocketMQ,目的是通过大赛向技术爱好者们传达开源精神。 林昊在发布中表示,“对于开发人员来讲,很多工作都使用了开源的东西,开源对整个世界也产生了非常大的影响。对阿里来讲也同样,阿里巴巴也同样使用了开源的软件,在这个过程中,我们结合阿里的场景,对整个开源的产品进行了很多的改进,也不断开始回馈到社区。”从2017年起,阿里巴巴开源的步伐正在加速。 2017年9月,RocketMQ在Apache毕业,成为了Apache顶级项目(TLP)。10月份,OpenMessaging发布,分布式消息中间件、流处理领域的应用开发标准,目前已正式入驻Linux基金会,这也是国内首个在全球范围内发起的分布式消息领域国际标准
- 下一篇
Helm 架构 - 每天5分钟玩转 Docker 容器技术(161)
在实践之前,我们先来看看 Helm 的架构。 Helm 有两个重要的概念:chart 和 release。 chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板、参数定义、依赖关系、文档说明等。chart 是应用部署的自包含逻辑单元。可以将 chart 想象成 apt、yum 中的软件安装包。 release 是 chart 的运行实例,代表了一个正在运行的应用。当 chart 被安装到 Kubernetes 集群,就生成一个 release。chart 能够多次安装到同一个集群,每次安装都是一个 release。 Helm 是包管理工具,这里的包就是指的 chart。Helm 能够: 从零创建新 chart。 与存储 chart 的仓库交互,拉取、保存和更新 chart。 在 Kubernetes 集群中安装和卸载 release。 更新、回滚和测试 release。 Helm 包含两个组件:Helm 客户端 和 Tiller 服务器。 Helm 客户端是终端用户使用的命令行工具,用户可以: 在本地开发 chart。 管理 chart 仓库。 与 Ti...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8安装Docker,最新的服务器搭配容器使用