Tag

Linux

tmux

在后台启动tmux tmux new -d -s name

给tmux输入发送指令 tmux send-keys -t name:0 "echo hello" C-m

Ubuntu安装Mysql5.7笔记

下载

https://downloads.mysql.com/archives/community/

解压

tar -xf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz

创建linux用户和组

groupadd mysql && useradd -r -g mysql mysql

设置

注意,以下示例步骤中安装mysql的位置为/usr/local/mysql,mysql数据文件夹为/usr/local/mysql/data

vim /etc/my.cnf

参考:http://c.biancheng.net/view/7618.html

这儿的不要乱写,容易导致各种奇奇怪怪的问题

[mysqld]
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
max_connections=200
symbolic-links=0
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysql]
default-character-set=utf8

[mysqld_safe]
log-error=/usr/local/mysql/error.log
pid-file=/usr/local/mysql/mysqld.pid

文档:https://www.mysqlzh.com/doc/13/78.html

# 创建数据文件夹, 日志文件夹, 设置所有者
cd /usr/local/mysql && mkdir logs && touch error.log && chown mysql:mysql -R *

初始化

bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql --initialize

解决./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

sudo apt install -y libaio-dev numactl

复制 mysql 到系统服务

cp support-files/mysql.server /etc/init.d/mysql

解决Unit mysql.service does not exist, proceeding anyway.

修改vim /etc/init.d/mysql

# 若/etc/my.cnf中指定了mysql目录,则此处也需要指定
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

启动mysql

systemctl enable mysql

或者

service mysql start

进入mysql命令行

mysql -u root -p
# 在接下来的一行中输入密码

解决./mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

apt-get install -y libncurses*

修改密码

-- 更新密码
alter user 'user'@'host' identified by 'password';
-- 刷新权限
flush privileges;

常用操作

以下内容参考于 https://blog.csdn.net/qpzkobe/article/details/102833458

# 创建用户 username替换为用户名, host替换为地址, password替换为密码
# 示例 CREATE USER 'mc'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
# 删除用户 username替换为用户名, host替换为地址
# 示例 DROP USER 'mc'@'localhost';
DROP USER 'username'@'host';
# 授权 privileges替换为权限, databasename替换为库名, tablename替换为表名, username替换为用户名, host替换为地址
# 示例 GRANT all ON playerpoints.* TO 'mc'@'localhost';
GRANT privileges ON databasename.tablename TO 'username'@'host';
# 撤销授权 privileges替换为权限, databasename替换为库名, tablename替换为表名, username替换为用户名, host替换为地址
# 示例 REVOKE all ON playerpoints.* FROM 'mc'@'localhost';
REVOKE privilege ON databasename.tablename FROM 'username'@'host';

# 刷新权限
flush privileges;

screen简单教程

Linux screen命令用于多重视窗管理程序。

screen为多重视窗管理程序。此处所谓的视窗,是指一个全屏幕的文字模式画面。通常只有在使用telnet登入主机或是使用老式的终端机时,才有可能用到screen程序。

https://www.runoob.com/linux/linux-comm-screen.html

下文中使用name作为默认的screen名字示例,实际使用中需要替换成你创建的screen的名字

简单的入门使用

创建并进入

screen -S name # 创建一个名字为name的screen

挂起当前screen(还可以进入)

在screen中按下ctrl + a,然后按d(注意如果开启中文输入法可能会失效)

查看存在的screen

screen -ls # 查看存在的screen

进入挂起的screen

screen -x name # 进入名为name的screen(允许多个终端同时进入)

若打开了多个同名的screen, 则需要先使用 screen -ls 列出并找到要打开的screen对应的id, 然后使用 screen -x id 进入对应的screen

screen -x 12345 # 进入id为12345的screen

退出当前screen(无法再进入)

exit # 若当前处于screen则退出screen, 否则会退出当前bash

特殊用法

后台创建

screen -dmS name # 创建一个名为name的screen但是不进入

外部执行指令

screen -x -S name -p 0 -X stuff "ls\n" # 外部调用名为name的screen输入ls并回车(\n代表回车)

此处的 -p 0 意为若存在多个screen则选择第0个(从0开始),若你没有同名的screen则可以去掉

外部关闭screen

screen -S name -X quit # 从外部关闭名为name的screen

滚动

先按 ctrl + a , 然后按esc

Linux环境变量设置完没有改变

我自己的服务器用的是Centos7, 最近设置环境变量的时候发现设置完source之后PATH居然没有变化

# 修改环境变量(我是写在文件最前面的)
vim /etc/profile

刷新环境变量

source /etc/profile

然后在profile里面设置完环境变量的地方echo了一下, 发现输出的PATH是正确的

经过排查之后发现

/etc/profile.d 里面有一个 mysql.sh

PATH=/usr/local/src/openJDK/bin:/usr/local/src/node/bin:/home/mysql/mysql/bin:/usr/local/src/ffmpeg:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/mysql/mysql/bin

怪不得PATH总是改完没反应

这里将它重命名为 mysql.sh.bak , 再source刷新之后, PATH就正确了

Linux设置ssh并通过ssh密钥登陆

进入 .ssh

# 进入 .ssh 文件夹
cd ~/.ssh

处理旧密钥

# 处理旧的密钥文件
mv id_rsa id_rsa.bak
mv id_rsa.pub id_rsa.pub.bak

创建密钥

# 输入后按3次回车
ssh-keygen -t rsa

公钥写入到文件

# 将公钥写入authorized_keys
cat id_rsa.pub >> authorized_keys

问题

若出现问题无法登陆,则检查日志 /var/log/secure

写入公钥后无法登陆

Authentication refused: bad ownership or modes for file /root/.ssh/authorized_keys

原因:

sshd 为了安全,对属主的目录和文件权限有所要求。如果权限不对,则 ssh 的免密码登陆不生效

用户目录权限为 755 或者 700,就是不能是 77x

.ssh 目录权限一般为 755 或者 700

rsa_id.pub 及 authorized_keys 权限一般为 644

rsa_id 权限必须为 600

# 设置权限(权限错误会无法登陆)
cd ~/.ssh
chmod 644 authorized_keys id_rsa.pub && chmod 600 id_rsa && chmod 700 .

Ubuntu20.04安装&配置下载源/中文

下载ISO & 安装

官网下载,这里选LTS(长期支持版)

这里我用的vmware虚拟机安装的ubuntu,如果要在实体机上安装ubuntu的话,可以使用ubuntu官网推荐的rufus

安装过程比较长并且没有什么需要操作的地方,跳过

配置下载源

安装好系统后,默认是英文,系统默认没有附带中文的语言文件,要更换语言就得下载。

下载之前首先要设置下载源,国内不配置下载源下载会非常慢(如果有弹窗让你更新的话先放着,等配置好下载源之后再更新)

关闭并且重载

等到进度条走完就完成了换源(如果有报错跳过即可)

更换系统语言

安装完成后

设置格式

设置完成后重启就是中文得了

不要忘了设置输入法 不要忘了设置输入法

其他设置

标准文件夹改名

将语言设置为中文后系统会询问是否改名标准文件夹,这里我选择不改

原因是之前用centos7(gnome桌面),中文输入法有时会失灵,无法输入中文,没办法进入中文名字的文件夹

自动息屏

时区

SU & ROOT

ubuntu默认不允许直接使用root账户登陆,需要使用时请使用 su 指令切换到 root 账户,使用完毕之后用 exit 指令退出

第一次使用 su 切换toot账户之前需要先为root账户设置密码

输入 sudo passwd 为root账户设置密码,输入指令后需要输入3此密码,第一次是当前账户的密码,后两次是设置root账户的密码,输入后不显示是正常情况

代理

wget的时候是不走系统代理的,解决办法

export https_proxy=192.168.48.1:7890 export http_proxy=192.168.48.1:7890 export ftp_proxy=192.168.48.1:7890

这里的 192.168.48.1:7890 是我本机的代理,使用时修改成你的代理地址

远程连接/SSH

Ubuntu默认带了openssh-client,但是没有openssh-server

直接 apt install -y openssh-server 会提示

这里我们直接卸载已有的openssh-clileht

apt remove -y openssh-client

然后再安装openssh-server

apt install -y openssh-server

ps: 这里我使用的root账户安装,若是普通账户请在指令前添加 sudo

sudo apt remove -y openssh-client

sudo apt install -y openssh-server

linux设置路径(Path)

注意

本文教程中默认假设java文件夹位于 /usr/local/java,实际修改以你自己的java文件夹为准

Path意义

输入指令后计算机会查找对应的可执行文件,查找的路径就是Path

操作步骤

这里以设置java的路径举例,假设java文件夹位于 /usr/local/java ,你在操作的时候需要把 /usr/local/java 替换成自己的软件的路径

修改路径文件

打开系统路径文件

vi /etc/profile

进入编辑模式

在vi里面默认不是编辑模式

按i或者右侧方向键上面那一块里面的insert键进入编辑模式

左下角显示 -- INSERT ---- 插入 -- 时就是进入了编辑模式,注意不要使用替换模式

添加路径

在打开文件的最前面添加如下内容

export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin


# 检查是否设置完成
java -version
# 如果显示 bash: java: 未找到命令... 就代表你改的有问题
# 如果显示了java的具体信息就代表修改成功

JAVA_HOME并非必须,也可以用改成如下方式(注意,两者二选一)

export PATH=$PATH:/usr/local/java/bin

按esc,输入 :wq 保存并退出

刷新路径

source /etc/profile

如果输入此指令后什么也没发生,别担心,这是正常情况,说明操作执行正常完了

检查路径

通过查看Java版本检查Java是否被加入进path

java -version

也可以直接查看path

echo $PATH