连接远程服务器
一些查看命令
看内存
free -h
看已挂载磁盘空间
df -h
看当前目录的磁盘使用情况
du -sh .
复制到远程 # 带-r是文件夹, 不带是文件
scp -r [本地path/文件] [用户名]@[ip地址]:[远程path/文件]
rsync方法 # 带-r是文件夹, 不带是文件
rsync -r [本地path/文件] [用户名]@[ip地址]:[远程path/文件]
关闭ssh连接
Ctrl+d
设置这个避免远程连接不用,等一会就断连了。
# /etc/ssh/ssh_config 或 ~/.ssh/config
24 Host *
25 ServerAliveInterval 60
普通连接远程服务器
# 连接
ssh [用户名]@[远程ip]
# 一些配置可设可不设
# ~/.ssh/config
Host remote-server
HostName 10.184.17.27
User liukun
IdentityFile ~/.ssh/id_rsa_10.184.17.27
PubkeyAuthentication yes
PasswordAuthentication no
iterm2连远程服务器
我是想用key连接,不想用用户名密码,所以
-
创建key, 可能需要改下名字
ssh-keygen
-
把公钥(带pub的)传到远程server
ssh-copy-id -i [path/公钥的名字.pub] [用户名]@[远程ip]
-
写一个登录脚本,一般就在
.ssh
下
# ~/.ssh/expect的脚本.sh
#!/bin/bash
spawn ssh -i [path/私钥的名字] [用户名]@[远程ip]
interact
-
在iterm2的setting的profiles下创建一个新的profile,主要是改名字,以及设置
command ->
选择command,然后路径设置:
expect ~/.ssh/expect的脚本.sh
-
在iterm2的profiles里面找到4设置的名字,点击连接。
创建隔离环境
因为没有root权限,所以安装要安装在~
路径下,和其他用户分隔开。
其实一些软件自带了隔离环境的tool,比如python可以使用venv
,node.js用nvm
,前端用npm
。
统一的方法:将软件所在的路径加入到 PATH 环境变量
执行方式:
在 .bashrc 配置文件中把 ~/.local/bin/
加入到 PATH 环境变量中,且优先于原本 PATH 中的系统路径:
export PATH="$HOME/.local/bin/:$PATH"
ps:查看本机shell
echo $SHELL
或者 echo $0
无root安装mysql
就要自己在官网下载。
注意格式选Linux - Generic
。下载链接在download
按钮右键复制
❗️ 这里我刚开始下载了mysql-8版本,后面提示说太高,最后是降到mysql-5版本成功的。
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.28-x86_64.tar.xz
解压。刚开始用tar -zxvf
光报错,结果我是tar.xz
不是tar.gz
格式
tar -xvf mysql-5.7.44-linux-glibc2.28-x86_64.tar.xz
移到~/.local/bin/
并改名。没有bin
就mkdir
mv mysql-5.7.44-linux-glibc2.28-x86_64 ~/.local/bin/mysql-5.7.44
然后进mysql-5.7.44
创建my.cnf
并编辑
[client]
port=3306
socket=$HOME/.local/bin/mysql-5.7.44/mysql.sock
[mysqld]
port=3306
basedir=$HOME/.local/bin/mysql-5.7.44
datadir=$HOME/.local/bin/mysql-5.7.44/data
pid-file=$HOME/.local/bin/mysql-5.7.44/mysql.pid
socket=$HOME/.local/bin/mysql-5.7.44/mysql.sock
log_error=$HOME/.local/bin/mysql-5.7.44/error.log
server-id=100
# 大小写不敏感
# lower_case_table_names=1
运行☟,初始化mysql
bin/mysqld --defaults-file=$HOME/.local/bin/mysql-5.7.44/my.cnf --initialize --user=你的username
然后就会报错
bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
然后在这里下载
wget https://pagure.io/libaio/archive/libaio-0.3.113/libaio-libaio-0.3.113.tar.gz
解压
tar -zxvf libaio-libaio-0.3.113.tar.gz
这里安装,又要绕开root
make
# 这里要指定安装路径,最后这个libaio是自己定义的文件夹
make install prefix=$HOME/.local/bin/libaio
然后在lib64里添加软链,如果没有lib64就mkdir。我也不知道放在lib里还是lib64里,就都放了。
cd $HOME/.local/bin/mysql-xxx/lib(or lib64)
ln -snf $HOME/.local/bin/libaio/lib/libaio.so.1.0.2 libaio.so.1
我这里是libaio.so.1.0.2,需要看自己的libaio包里是什么。
这里的逻辑是,将libaio安装到一个地方比如$HOME/.local/bin里,然后在mysql的lib里,将libaio.so.1软链到安装后的libaio文件夹里的libaio.so.1.0.2上。之前看的教程,这里步骤说的不是很清楚。
然后增添环境变量
# ~/.bashrc
export LD_LIBRARY_PATH=$HOME/.local/bin/libaio/lib
export PATH=$PATH:$HOME.local/bin/mysql-5.7.44/bin
这里的意思是,将mysql的bin加入环境变量path,并且将这个libaio的执行路径(libaio.so.1.0.2的文件夹)加入这个LD_LIBRARY_PATH。
然后source 它。
然后在mysql里再运行。
💡 注意这里的--user=mysql
我开始以为是自己的用户名,其实是
mysql 用户是专门用于运行 MySQL 服务器的用户。
在安装 MySQL 时,通常会自动创建一个名为 mysql 的用户,并且 MySQL 服务器会以该用户的身份运行。
bin/mysqld --defaults-file=$HOME/.local/bin/mysql-5.7.44/my.cnf --initialize --user=mysql
如果啥都没返回且没报错就成功了。
启动mysql,&
意思是后台运行
bin/mysqld_safe --defaults-file=$HOME/.local/bin/mysql-5.7.44/my.cnf --user=mysql &
结果报了一个错,找不到errmsg.sys
的路径,那么给my.cnf
里添加
[mysqld]
...
lc-messages-dir=/home/liukun/.local/bin/mysql-5.7.44/share/english/
这个写到文件夹就好了,不用写文件。
然后再启动。如果进程没退出,且另开一个终端,在mysql/
文件夹里运行netstat -tln | grep 3306
能看到监听内容就成功了。
之后登录。gpt说root初始没有密码,其实不对,还是在error.log里有初始密码,用:
cat error.log | grep root@localhost
查看,登录。
mysql -u root -p -S /home/project/tools/mysql/mysql.sock
注意咱这种方法,都要手动指定sock目录-S [path]
登录之后修改密码:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456'); --设置登录密码为123456
flush privileges;
# 可以顺便创建一个新用户,并给权限
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
还需要开启远程访问:
# 注意这里仍然是登录mysql状态
mysql> use mysql
# 这里查看用户认证信息,可以看到HOST列全是localhost
mysql> select User,authentication_string,Host from user;
# 设置允许其他主机访问,by后面那里是密码
# % 表示所有主机,也可以用具体ip表示
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
flush privileges;
至此好了。可以再select查一次就会发现多了一行host列为%的
坑
round了一圈还是要sudo权限比较好TT