Database Toolkit
Outline:
- Mysql
- Mongodb
- Database Tools
Mysql
Install
manjaro:
1
yay -S mysql
mac:
1
brew install mysql
Ubuntu:这里只针对Ubuntu 20.04. Ubuntu 源仓库中最新的 MySQL 版本号是 MySQL 8.0
1
2sudo apt update
sudo apt install mysql-server
Start mysql server:
1
sudo systemctl start mysql
Check status of mysql-server:
1
systemctl status mysql
Unintall
on Ubuntu:
- First, remove already installed mysql-server using--
sudo apt-get remove --purge mysql-server mysql-client mysql-common
- Then clean all files
sudo apt-get autoremove
Config
mysql允许远程访问
mysql默认绑定本地环回地址(127.0.0.1),无法公网通信(即使你的用户是允许远程登录的用户(如%
):
1 | tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 3783/mysqld |
需要修改mysql的配置文件, 该文件的位置依平台的不同而变化. 它在ubuntu20.04中位于:
1
/etc/mysql/mysql.conf.d/mysqld.cnf
我们需要修改
bind-address
字段:可以在其后面添加可访问mysql服务器的ip,用空格隔开:
1
bind-address=127.0.0.1 139.196.197.138 <other-ip>
或者直接把该字段注释掉
重启mysql服务:
1
service mysql restart
Connection
远程连接:
1
mysql -h 192.168.5.116 -P 3306 -u root -p123456
简单来说,locahost
一般意味着使用的是 Unix Domain Socket
,此时是不会经过网络防火墙的。
如果 skip_name_resolve
配置关闭,那么 127.0.0.1
这类地址也会被解析成 locahost
如果不指定主机或者使用 -hlocalhost
,实际上会有限尝试使用 Unix Domain Socket 连接 (实际还需要保证没有使用 --protocol=TCP
参数),默认的是 /var/lib/mysql/mysql.sock
,如果 Sock 地址修改了,也可以通过 -S PATH
参数指定。
也就是说,在通过 mysql 客户端访问数据库时,如果指定了 -h<IP>
参数,那么会通过 TCP/IP 方式连接数据库。
最简单的,如果要要强制使用 TCP/IP 连接到本地服务器,那就使用 IP 地址 127.0.0.1
而不是主机名 localhost
通过 TCP/IP 方式进来的连接,MySQL 服务器接收到的来源主机是 127.0.0.1
;如果采用的是 UNIX Domain Socket 方式,那么 MySQL 服务器接收到的来源主机是 localhost
。
另外,对于 TCP/IP 方式来说,如果关闭了 skip_name_resolve
选项,那么会尝试将获取到的 IP 地址解析成域名。
skip_name_resolve
参数在调优时,一般建议开启,也就是说禁止域名解析,可以通过如下命令查看是否开启。
1 SHOW VARIABLES LIKE '%skip_name_resolve%';修改时,可以直接在
my.cnf
配置文件的[mysqld]
字段中添加skip-name-resolve
即可。
在 MySQL 中 localhost
一般是用来标示 Unix Domain Socket ,如果将 skip_name_resolve
关闭,那么 127.0.0.1
也可能会被反解析成 localhost
。
Problems
空密码无法用Datagrip连接
- 首选当然是设一个密码
- 也可以将Datagrip配置中的密码的保存方式更改为Never
Mongodb
Install
由于 MongoDB 修改了软件授权协议, 官方仓库已经删除了此软件包。请注意从代码编译 mongodb 需要 ~160GB 磁盘空间,需要花费几个小时时间。因此我们最好安装-bin
版本
1 | yay -S mongodb |
注意: 只有先启动mongod
, 才能正确启动mongo
报错
可能有报错:
1 | > mongo |
出现以上原因,可能是data目录下的mongod.lock文件的问题。可以使用命令修复:
1 | [ ] |
然后重新打开一个窗口,启动mongodb
Config
配置文件路径: \etc\mongodb.conf
.
- 其中
dbpath
为数据库的路径
Commands
启动
1 | $ systemctl start mongodb.service |
查看状态:
1 | sudo systemctl status mongodb |
重启:
1 | sudo systemctl restart mongodb |
停止:
1 | sudo systemctl stop mongodb |
重载服务:
1 | sudo systemctl daemon-reload |
设置开机启动:
1 | sudo systemctl enable mongodb |
Database Tools
mycli
好用的命令行mysql界面,项目地址
1 | 通用 |
or
1 | on Arch |
or
1 | Only on macOS |
or
1 | Only on debian or ubuntu |