一.查询本地已经存在的mysql地址
which mysql #查看使用的是哪一个mysql,执行mysql指令的绝对路径。即(运行文件所在路径)
二.安装、配置并启动mysql(安装及配置过程中的一些常见报错,见文尾)
1.安装mysql,可以使用如下3种方法:
- 源码安装
- 包安装(参见:https://www.cnblogs.com/xuyatao/p/6932885.html)
- mac下brew安装与配置mysql:见 https://www.cnblogs.com/raind/p/10071954.html
2.配置mysql
问题点一:如何设置mysql为远程可登录?
用brew install 安装成功mysql后提示如下:(MySQL is configured to only allow connections from localhost by default)
![]()
图一:brew install安装后的提示图 可以看到mysql安装后默认只能本机连接 若需要远程连接,需要修改配置!
详细操作见:https://blog.csdn.net/feixiang2039/article/details/81164136
输入
mysql --help
可以看到如下文字:
依次查看上述配置,确认当前读取的配置文件目录,修改配置。修改配置后,杀死mysql进程(见: https://blog.csdn.net/xiaoqiu_cr/article/details/80906955),执行
mysql.server start
命令,重启mysql。
操作完成后使用如下命令,校验是否可远程登录:
mysql -h xx.xx.xx.xx -P 3307 -uroot -p123 #注意:"-p"和"123" 之间不能有空格
》》》查看某一个命令是在什么目录下执行
》》》https://blog.csdn.net/a281468673/article/details/90755356
问题点二:如何在同一mysql服务器上启动多个端口?
上述操作默认启动的是3307端口,那么如何在同一台MySQL服务器启动多个端口-为读写分离做准备呢?
详见:https://www.cnblogs.com/fger/p/10403017.html
》使用mysqld --initialize初始化数据库实例(注意不要使用mysql_install_db,这个命令已经弃用),命令执行方式见:
https://idc.wanyunshuju.com/cym/1486.html
https://blog.csdn.net/bao19901210/article/details/51917641
》登录mysql后,输入如下命令,来查看当前的端口号。
show global variables like 'port'; #该命令可用于查看服务器配置参数
问题点三:MySQL配置相关
Mac系统添加MySQL配置文件: https://www.jianshu.com/p/55ba63012185
⚠️mac中安装完mysql后,没有自动生成mysql的配置文件,需要手动去操作生成。手动操作生成后,重启电脑生效。
3.启动&终止mysql
问题点四:如何启动mysql
1. brew install安装的mysql会有提示启动命令,见下图一。
2. 源码安装的
三:登录、修改密码、查看&创建用户
用用户名和密码登录后,新安装的mysql默认有以下4个数据库:
默认的用户信息都在mysql这个数据库中,具体信息可以切换到该数据库进行查看。参见:https://blog.csdn.net/huxinguang_ios/article/details/80893675
四.数据库表的建立
创建一个用于学习的数据库
CREATE DATABASE TestDB;
五.操作数据库
一路坎坷,终于到了真正使用的时刻,灯灯灯灯...
数据库语句编写的第一步:创建表(也称为关联表)
知识点1:
delete 和 drop的区别,直接看执行结果见下:
![](https://i-blog.csdnimg.cn/blog_migrate/d740e1a335409d98a4304f12c62ccf6d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/11d759a2c200791e9c2c0b731dcb72f0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2fcef3d9b16dc725e1be9aa98c0f8e99.png)
知识点2:
sum,count函数,只有在group之后才使用。并且一使用了group by之后,就必须使用函数来查询
知识点3:
连接查询一定要对结果集进行去重(distinct)
子查询的in和等于问题,注意当子查询是多个时只能用in,子查询结果只用一个时可以用=
知识点4:
查询出每一个取经人打怪最多的日期,并列出取经人的姓名,打怪最多的日期和打怪数量。
方法一:join 查询+子查询实现多列过滤:
select a.user_name, b.timestr , b.kills from user1 as a left join user_kills as b on a.id=b.user_id where (a.id , b.kills) in (select user_id, MAX(kills) from user_kills group by user_id);
方法二:多个join查询连接
select a.user_name, b.timestr , b.kills from user1 as a left join user_kills as b on a.id=b.user_id join (select user_id, MAX(kills) as cnt from user_kills group by user_id) as c on b.user_id=c.user_id and b.kills = c.cnt;
报错:估计是粘贴格式的问题,重新编写一下就正确了
https://zhidao.baidu.com/question/570567785.html
知识点5:mysql语句的书写顺序和执行顺序:
mysql的每一个操作都会产生一张虚拟表,这个虚拟表作为下一步处理的输入,这些虚拟表对于用户来说是透明的,只有最后一个虚拟表才作为结果返回给用户。
1.执行顺序
https://www.cnblogs.com/52forjie/p/7825613.html
https://www.cnblogs.com/xiaolovewei/p/8999623.html
https://www.cnblogs.com/xiaoyaodijun/p/4521858.html
2.语句的执行顺序与explain
https://www.jianshu.com/p/c84a850295f9
知识点6:mysql死锁:
http://blog.csdn.net/c__ilikeyouma/article/details/8541195
知识点7:mysql数据备份:
数据库查询练习题:https://blog.csdn.net/fy_java1995/article/details/80305172
常见报错:
1. mysql安装完成后可以使用各种连接工具来进行登录,使用Navicat Premium登录时会出现如下错误:
2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found
这是由于不同版本的mysql加密规则不一致导致的问题:解决方案详见:https://www.cnblogs.com/zhurong/p/9898675.html
https://blog.csdn.net/xjl271314/article/details/80550765