MySQL学习笔记-自己看

#yum安装  
选择yum源后使用
yum install mariadb-server mariadb   命令安装对应版本
---------------
#rpm 安装 需要手动安装四个依赖
名字:
server
devel
shared
clint
-----------------------
#编译安装
1.获取源代码包 解压缩,源码目录下有一个makefile
2.进入源码目录下,执行make,自动东区makefile
3.在编译完成后,执行make install,安装mysql到指定位置


安装依赖
yum install ncurses-devel libaio-devel gcc gcc-c++ make cmake wget
查询安装是否成功
rpm -qa ncurses-devel libaio-devel

创建mysql 用户

useradd -s /sbin/nologin -M mysql 
解释:(是一个在Linux系统中用于添加新用户的命令。具体来说,这条命令用于添加一个名为mysql的新用户,并为其设置一些特定的选项。下面是命令各部分的解释:

useradd: 这是Linux中用于添加新用户的命令。

-s /sbin/nologin: 这个选项设置用户的登录shell为/sbin/nologin。通常,这意味着这个用户不能登录系统,因为/sbin/nologin会阻止用户登录。这对于那些只需要运行后台服务或进程,而不需要交互式登录的用户帐户来说是很有用的,比如数据库用户或其他系统服务用户。

-M: 这个选项告诉useradd命令不要创建用户的主目录。通常,当用户被创建时,系统会在/home/目录下自动为该用户创建一个主目录(例如,对于用户名为mysql的用户,会创建一个/home/mysql目录)。但是,使用-M选项会阻止这一行为。
mysql: 这是要创建的用户的用户名。

解压 tar包
tar -zxvf mysql-8.4.0.tar.gz

进入目录执行cmake

cmake -DCMAKE_INSTALL_PREFIX=/application/mysql -DMYSQL_UNIX_ADDR=/application/mysql/mysql.sock -DSYSTEMD_PID_DIR=/application/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/application/mysql/data -DDOWNLOAD_BOOST=1 -DWITH_SYSTEMD=1 

编译后 执行 make && make install 进行安装


mysql 初始化  使用mysql用户进行启动(为创建mysql使用root用户初始化)

sudo mysqld --initialize --user=mysql

启动mysql 并开机启动
systemctl start mysqld
systemctl enable mysqld
修改密码
mysqladmin -uroot -p
-------------------------------------
二进制安装方式
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.45-linux-glibc2.12-x86_64.tar.gz

创建用户
useradd -s /sbin/nologin -M mysql 
解压缩二进制
tar -zxvf /home/xiaolong/tools/mysql-5.6.45-linux-glibc2.12-x86_64.tar.gz  -C /application/

准备多实例的安装目录
mkdir -p /my_mysql/{3306,3307}
mkdir -p /my_mysql/{3306,3307}/data
touch /my_mysql/3306/mysql-3306.err
准备启停脚本
数据初始化 初始化data文件


编辑my.cnf   注意修改端口和serverid
vim /my_mysql/3306/my.cnf 
::%s/3306/3307/g


增加文件访问权限
chown -R mysql:mysql /my_mysql

配置环境变量
vim /etc/profile
最下方增加
export PATH=/application/mysql-5.6.45-linux-glibc2.12-x86_64/bin/:$PATH
-------

[client]

[mysqld]
port = 3306
# 服务器独立的socket文件  登陆时使用
socket = /my_mysql/3306/mysql.sock
#应用程序目录
basedir=/application/mysql-5.6.45-linux-glibc2.12-x86_64/
#初始化数据存放目录
datadir=/my_mysql/3306/data
#用于主从复制
log-bin=/my_mysql/3306/mysql-bin
#数据库标识id
server-id=3306

[mysqld_safe]
log-error=/my_mysql/3306/mysql-3306.err
pid-file=/my_mysql/3306/mysql-3306.pid--------

初始化
/application/mysql-5.6.45-linux-glibc2.12-x86_64/scripts/mysql_install_db --user=mysql --basedir=/application/mysql-5.6.45-linux-glibc2.12-x86_64 --defaults-file=/my_mysql/3306/my.cnf --datadir=/my_mysql/3306/data

/application/mysql-5.6.45-linux-glibc2.12-x86_64/scripts/mysql_install_db --user=mysql --basedir=/application/mysql-5.6.45-linux-glibc2.12-x86_64 --defaults-file=/my_mysql/3307/my.cnf --datadir=/my_mysql/3307/data
--------------------------
启停脚本 由于关机时候无法删除sock 和 pid文件  所以 要在启停脚本执行时增加删除文件

#!/bin/bash
port=3306
user=mysql
Cmdpath="/application/mysql-5.6.45-linux-glibc2.12-x86_64/bin/"
mysql_sock="/my_mysql/${port}/mysql.sock"
mysqld_pid_file_path="/my_mysql/${port}/mysqld_${port}.pid"


start() {
        if [ -e "$mysql_sock" ]; then
        rm "$mysql_sock"
        fi

        if [ -e "$mysqld_pid_file_path" ];then
        rm  $mysqld_pid_file_path
                 
        fi


        if [ ! -e "$mysql_sock" ]; then

        printf "启动mysql中\n"
       /bin/sh "${Cmdpath}/mysqld_safe" --defaults-file="/my_mysql/${port}/my.cnf" --pid-file="$mysqld_pid_file_path" 2>&1 > /dev/null &

        sleep 3

        if [ ! -e "$mysql_sock" ]; then
        printf "mysql 启动失败\n"
        exit 1
        else
        printf "mysql 启动成功\n"
        fi

        
    else
        printf "mysql 已经启动\n"
        exit 1
fi
}    

stop(){
if [ ! -e "$mysql_sock" ]; then
        printf "mysql 未启动\n"
        exit 1
else

        printf "mysql 正在停止\n"
        mysqld_pid=`cat "$mysqld_pid_file_path"`
        if (kill -0 $mysqld_pid 2>/dev/null)
        then
                kill $mysqld_pid
                sleep 2 
        if [ ! -e "$mysql_sock" ]; then
        printf "mysql 已停止\n"
        exit 1
        else
        printf "mysql 停止失败\n"
        fi


        fi


fi

restart(){
        printf "重启服务中\n"
        stop
        sleep 2
        start

}

case "$1" in
start)
start
;;
stop)
        stop
;;
restart)
        restart
;;
*)

printf "信息:/data${port} {start|stop|restart}\n"

esac


设置开机启动   配置下方脚本后 sudo systemctl enable mysql3306    ;sudo systemctl start mysql3306 

 在crontab -e 中增加脚本   
@reboot /my_mysql/3306/mysql_ctl_3306 start
@reboot /my_mysql/3307/mysql_ctl_3307 start


登陆  ip+host登陆
mysql -uroot -p -h127.0.0.1 -P3306

本机可以使用套接字登陆
mysql -S /my_mysql/3306/mysql.sock

修改密码  两种方式
mysqladmin -uroot -p -h127.0.0.1 -P3306   password
mysqladmin -uroot -S /my_mysql/3306/mysql.sock password
--------------------------mysql操作
远程登陆授权   grant/授权去除/revoke /commit提交/rollback回滚
grant all privileges on *.* to root@'192.168.174.%' identified by '123456';   只有登陆权限 没其他权限 一定记得要刷新授权表 flush privileges;
grant 给与的权限 on 数据库.数据表 to 用户@'允许登陆的主机';

创建数据库 使用utf8
create database lol default character set utf8 collate utf8_general_ci;
show variables like 'char%';  查看数据库字符集信息

use mysql;选择数据库
select database();查看使用的数据库
desc user; 显示表结构
create user root@'%' identified by '123456';增加用户全部网址访问权限包括外网
show grants for root ;查询用户权限
--帮助
? data definition; 查看DDL 操作  数据定义语言 用于定义或修改数据库结构的语句
? account management; 查看DCL操作  授权管理 是用来设置或更改数据库用户或角色权限
? data manipulation;查看DML错做 数据操作语言,是用于查询和操作数据库中数据的语句集合


创建表  tanks 使用的时反引号或不用引号
create table if not exists `tanks` (
id int auto_increment,
name varchar(100) not null,
skills varchar(255) not null,
price int not null,
primary key (id)
)engine=innodb default charset=utf8;


select * from tanks liimit,2;

修改自增和主键,有主键不能再增加 alter table tanks modify id int(11) primary key auto_increment
----------------------------mysql用户和服务器权限控制语句-----------
GRANT SELECT,INSERT,UPDATE,DELETE on 数据库.数据表 to 用户名@'%' identified by '密码'
不要用*.*
一定要记得刷新权限:flush privileges;

不要随便使用 all privileges;
尽量不要使用%给ip地址,需要限制ip或者网段‘192.168.174.%’  即便是公网中使用也要用防火墙保证安全,以及更换mysql的默认端口号等
方式:root登陆密码复杂
更改ssh端口 sudo vi /etc/ssh/sshd_config  修改port   重启服务 sudo systemctl restart sshd
禁止root登陆,只允许普通用户登陆 修改 SSH 配置文件/etc/ssh/sshd_config中的PermitRootLogin为no 
禁止使用账号密码登陆  修改 SSH 配置文件/etc/ssh/sshd_config中的PasswordAuthentication为no
只用普通用户+公私钥的形式登陆 cp /home/xiaolong/id_rsa.pub  /root/.ssh/    写入cat id_rsa.pub >> authorized_keys
修改常见的软件默认端口,例如3306,6379

----索引的查看和创建
 查看索引: show INDEX FROM table;

创建索引: alter table tanks add index 索引名(字段名);

删除索引: alter table tanks drop index 索引名;


 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值