一、下载

官网地址: https://dev.mysql.com/downloads/mysql/

选择:macOS 10.14 (x86, 64-bit), Compressed TAR Archive

下载后,得到一个131.9m的压缩包 mysql-8.0.13-macos10.14-x86_64.tar.gz,将其解压到/usr/local/下,并重命名为mysql (即:最后的完整目录应该是/usr/local/mysql)

二、调整目录权限

cd /usr/local
chown -R 当前登录mac的管理员用户名 mysql

这一步的目的,主要是保证/usr/local/mysql下可以写入数据

三、初始化数据库

cd /usr/local/mysql/bin
sudo ./mysqld --initialize --user=mysql
2018-12-01T14:42:12.002186Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.13) initializing of server in progress as process 4229
2018-12-01T14:42:12.004783Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
2018-12-01T14:42:12.006285Z 0 [Warning] [MY-010122] [Server] One can only use the --user switch if running as root
2018-12-01T14:42:14.187443Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: iM46X&03qRc_
2018-12-01T14:42:15.427614Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.13) initializing of server has completed

注意蓝色标出的部分,初始化过程中,会生成一个随机的root初始密码,记好这个,后面会用到。

如果没记下这个密码,导致后面无法登录,可以rm -rf /usr/local/mysql/data/* 把所有文件干掉,再来一把。

四、启动mysql
cd /usr/local/mysql/support-files

./mysql.server start (注:类似的status为查看状态,stop为停止服务)

Starting MySQL
. SUCCESS!

看到这个SUCCESS就表示启动成功了。

五、修改密码
cd /usr/local/mysql/bin
./mysqladmin -u root -p password

初始密码实在太难记了,可以用上面的命令先改一下 (注:密码要满足复杂性要求,比如Www.123.abc之类)

这一步做完后,应该就可以用

./mysql -u root -p

命令行终端登录了,不过8.0貌似安全策略做了调整,用navicat之类的工具连接,会出现:

Client does not support authentication protocol requested by server; consider upgrading MySQL client

之类的错误,解决方法:

use mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;

然后应该就可以了。

六、mysql 8新增的一些函数

6.1 over()开窗函数

over开窗函数,在oracle中早就有了,但是mysql直到8.0+才开始支持,参考文档见:https://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html,它的作用有点类似于将"聚合结果行转列", 具体参考下面的示例(来自官网)

如上图,这是一张销售记录表,上面记录了"某一年、某个国家、某种产品"的销售利润。如果我们要分析,每一行销售记录,在本年/本国/本类产品/甚至所有销售中的贡献度(即:所占百分比)。按传统思路,至少得先汇总出 "每年的总销售金额,每个国家的总销售金额,每类产品的总销售金额...",然后用本行的profit去除这些汇总值,才能计算出百分比。

有了over函数后,就可以很简单了:

SELECT
YEAR '年份' ,
country '国家' ,
product '产品' ,
profit '产品利润' ,
SUM(profit) OVER(PARTITION BY country , YEAR ,product) AS '年度-某国家-某产品-利润小计' ,
SUM(profit) OVER(PARTITION BY country , YEAR) AS '年度-某国-利润小计' ,
SUM(profit) OVER(PARTITION BY country) AS '某国-利润小计' ,
SUM(profit) OVER(PARTITION BY YEAR) AS '年度-利润小计' ,
SUM(profit) over() AS '利润合计'
FROM
sales
ORDER BY
YEAR ,
country ,
product ,
profit;

结果如下:

各种聚合结果,可以方便的展示在同一行,如果要输出百分比,直接拿"利润"这一栏,除以后面某一列汇总值即可。

6.2 row_number()函数

这个函数同样也是从oracle模仿过来的,用法如下:

select
row_number() over w as 'No.' ,
year ,
country ,
product ,
profit
from
sales
where
year = 2001 window w as(order by country)
order by country

输出:

详情可参考 https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html

最新文章

  1. Cocos2d-x win7 + vs2010 配置图文详解
  2. mysql metadata lock(一)
  3. CSS3动画(动画已丢,看原文)
  4. QQReg.java
  5. 关于for循环条件性能问题
  6. Android Facebook和Twitter分享
  7. SQL Server附加数据库文件出错
  8. tomcat 设置默认编码格式
  9. 数据结构(动态树):[国家集训队2012]tree(伍一鸣)
  10. hdu 2966 In case of failure k-d树
  11. IOS 可靠性测试 iosMonkey
  12. macOS Sierra安装Apache2.4+PHP7.0+MySQL5.7.16
  13. Linux - 简明Shell编程07 - 数组(Array)
  14. 数据库.MongoDB.Java样例
  15. 2017ICPC/广西邀请赛1005(水)HDU6186
  16. linux命令 uname -r 和 uname -a 的解释与演示
  17. (jzoj snow的追寻)线段树维护树的直径
  18. python数据结构与算法第十六天【贪心算法与动态规划】
  19. [转]Angular4 自制分页控件
  20. Workflow_标准控件Wait_For_Flow和Contiune_Flow的用法(案例)

热门文章

  1. jxoi2017
  2. python全栈开发day51-jquery插件、@media媒体查询、移动端单位、Bootstrap框架
  3. python函数式编程——返回函数
  4. mysql时间延时注入案例
  5. Android ADB命令 adb devices 出现error:protocol fault (no status)
  6. Java实现简单计算器、抽票程序
  7. rock-paper-scissors
  8. 001. Ansible简介
  9. Spring BPP中优雅的创建动态代理Bean
  10. shell delete with line number