数据库成长日记
1、数据库安装(mysql8.0为例)
(1) useradd mysql -s /sbin/nologin -M #创建mysql的虚拟用户用户
(2) cd /opt ;wget https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz #拉取数据库源码包
(3) tar xf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz #解压源码包
(4) ln -s /opt/mysql-8.0.26-linux-glibc2.12-x86_64 /usr/local/mysql # 建立软连接
(5) 创建mysql的配置文件(/etc/my.cnf),并授权;
1 cat>/etc/my.cnf<<'EOF' 2 #by zhanghe weixin:... 3 [mysqld] 4 user=mysql 5 basedir=/usr/local/mysql 6 datadir=/data/3306/data 7 port=3306 8 socket=/tmp/mysql.sock 9 10 [client] 11 socket=/tmp/mysql.sock 12 EOF
授权:chown mysql.mysql /etc/my.cnf
配置环境变量:echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile
环境变量生效 : . /etc/profile
2、数据库初始化
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data
重点知识1 : 之前不同版本的初始化命令异同
/usr/local/mysql/scripts/mysql_install_db #5.7之前
/usr/local/mysql/bin/mysqld #5.7和8.0初始化
重点知识2: --initialize和--initialize-insecure区别
--initialize: 会生成一个12位,4种密码复杂度临时管理员密码. 第一次登陆需要修改.
--initialize-insecure:管理员密码为空.
2.2.2配置并启动MySQL数据库
1.设置MySQL启动脚本
cd /usr/local/mysql/support-files/
cp mysql.server /etc/init.d/mysqld #<==拷贝mysql启动脚本到启动路径。
systemctl enable mysqld #<==等价chkconfig mysqld on(c7把服务设置开机自启动命令)
2.启动MySQL数据库
systemctl start mysqld
提示:使用kill -9 ID关闭数据库引起数据库故障案例
http://oldboy.blog.51cto.com/2561410/1431161。
3.检查MySQL数据库是否启动。
netstat -lntup|grep 330
4.查看MySQL数据库启动结果日志。
cat /data/3306/data/oldboy.err
5.数据库启动命令
systemctl {stop|start|restart} mysqld
service mysqld {stop|start|restart}
mysqladmin -uroot -poldboy123 shutdown #优雅的关闭数据库
还可以登录到数据库里面执行关闭。
mysql> shutdown;
mysql> restart;
3.1.4 登录MySQL数据库
命令mysql:
-u 用户
-p 密码
-S socket #多实例
-P 端口
-h 主机
-e 非交互操作mysql
2.维护性启动和关闭方式
1.维护性启动方式(往往需要额外加参数启动)
mysqld --port=3306 --mysqlx=0 & #--mysqlx=0为关闭33060端口,这是8.0增加的功能。
mysqld_safe --skip-grant-tables --skip-networking & #root管理员密码丢失使用这个命令启动。
使用mysqld和mysqld_safe启动优势:可以额外加参数启动,命令行高于配置文件my.cnf。
2.维护性关闭方式
可优先采用常规的systemctl重启方式,如果不行可以采用关闭进程命令关闭数据库,例如kill、killall、pkill,在不接任何参数的情况下,这几个命令发送的信号默认都是TERM(15),表示停止,但进程有权忽略该信号。示例如下:
kill pid #<==这里的pid为数据库服务对应的进程号。
killall mysqld #<==这里的mysqld是数据库服务对应的进程名字。
pkill mysqld #<==这里的mysqld是数据库服务对应的进程名字。
1)查看用户表的表结构
mysql> desc mysql.user;
==========================
mysql> use mysql
mysql> desc user
3.sql语句
创建用户
create user db_name@'10.0.0.%' identified by '123'; create user db_name@'10.0.0.0/255.255.255.0' identified with mysql_native_password by '123'; 用户授权: grant all on *.* to db_name@'10.0.0.%'; grant all on *.* to db_name@'10.0.0.0/255.255.255.0';
将oldboy用户的密码插件更改为mysql_native_password
alter user db_name@'10.0.0.%' identified with mysql_native_password by '123';
模糊查询:
select user,host,plugin from mysql.user where host like '%10%';
2)锁定和解锁用户(不确定是否有用的账户,可以先锁定)
mysql> alter user db_name@'10.0.0.%' ACCOUNT LOCK; #锁定用户
mysql> select user,host,account_locked from mysql.user where host like '%10%';
mysql> alter user db_name@'10.0.0.%' ACCOUNT UNLOCK; #解锁用户
4.删除用户
mysql> drop user oldgirl@'10.0.0.%';
mysql> select user,host from mysql.user where host like '%10%';

浙公网安备 33010602011771号