一、下载地址:https://dev.mysql.com/downloads/mysql/
下载后的文件目前版本为:mysql-8.0.18-macos10.14-x86_64.tar.gz
二、将文件解压并拷贝到/usr/local/下,命名为mysql
tar -zxvf mysql-8.0.18-macos10.14-x86_64.tar.gz -C /usr/local
cd /usr/local/
mv mysql-8.0.18-macos10.14-x86_64 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函数后,就可以很简单了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
结果如下:
各种聚合结果,可以方便的展示在同一行,如果要输出百分比,直接拿"利润"这一栏,除以后面某一列汇总值即可。
6.2 row_number()函数
这个函数同样也是从oracle模仿过来的,用法如下:
1 2 3 4 5 6 7 8 9 10 11 |
|
输出:
With__Sunshine 发布了38 篇原创文章 · 获赞 43 · 访问量 18万+ 私信 关注