当前位置: 首页 > news >正文

【mysql】mysql安装部署以及用户误删恢复

  本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》从问题中去学习k8s

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

《DBA》db的介绍使用(mysql、redis、mongodb...)

一、mysql安装

1.二进制安装
2.源码包安装
3.rpm包安装

1.源码包安装

1)上传或下载源码包
[root@db02 ~]# rz mysql-5.6.46.tar.gz
2)安装依赖
[root@db02 ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl openssl-devel
3)解压安装包
[root@db02 ~]# tar xf mysql-5.6.46.tar.gz
4)生成
[root@db02 ~]# cd mysql-5.6.46/
[root@db02 mysql-5.6.46]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.46 \
-DMYSQL_DATADIR=/usr/local/mysql-5.6.46/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.46/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0
5)编译和安装
[root@db02 mysql-5.6.46]# make && make install
6)做软连接
[root@db02 ~]# ln -s /usr/local/mysql-5.6.46 /usr/local/mysql
7)创建用户
[root@db02 ~]# useradd mysql -s /sbin/nologin -M
8)拷贝配置文件和启动脚本
[root@db02 ~]# cd /usr/local/mysql/support-files/
[root@db02 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite '/etc/my.cnf'? y
[root@db02 support-files]# cp mysql.server /etc/init.d/mysqld
9)初始化数据库
[root@db02 support-files]# cd /usr/local/mysql/scripts/
[root@db02 scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
8)配置system管理mysql
[root@db02 scripts]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin --defaults-file=/etc/my.cnf
LimitNOFILE = 5000[root@db02 scripts]# systemctl daemon-reload
[root@db02 scripts]# systemctl start mysqld
9)启动失败报错
[root@db02 scripts]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/usr/local/mysql-5.6.46/data/db02.err'.
200709 15:42:14 mysqld_safe Directory '/usr/local/mysql-5.6.46/tmp' for UNIX socket file don't exists.ERROR! The server quit without updating PID file (/usr/local/mysql-5.6.46/data/db02.pid).#原因:
1.cmake过程指定了socket文件位置,实际位置不存在
2.目录权限不足#解决:
[root@db02 scripts]# mkdir /usr/local/mysql-5.6.46/tmp/
[root@db02 scripts]# chown -R mysql.mysql /usr/local/mysql
[root@db02 scripts]# chown -R mysql.mysql /usr/local/mysql-5.6.46/
10)启动数据库
[root@db02 scripts]# systemctl start mysqld
11)配置环境变量
[root@db03 scripts]# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH[root@db03 mysql]# source /etc/profile
12)确认启动
[root@m01 scripts]# ps -ef | grep mysql
mysql     12886      1  2 03:10 ?        00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
root      12921  10636  0 03:11 pts/1    00:00:00 grep --color=auto mysql
[root@m01 scripts]# netstat -lntp   
tcp6       0      0 :::3306                 :::*                    LISTEN      12886/mysqld        

2.二进制安装mysql(指定安装目录)

1)安装依赖
[root@m01 ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl openssl-devel
2)解压包
[root@db03 ~]# tar xf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
3)创建自定义目录
[root@db03 ~]# mkdir /service
4)移动目录并做软连接
[root@db03 ~]# mv mysql-5.6.46-linux-glibc2.12-x86_64 /service/
[root@db03 ~]# ln -s /service/mysql-5.6.46-linux-glibc2.12-x86_64 /service/mysql
5)创建用户
[root@db03 ~]# useradd mysql -s /sbin/nologin -M
6)拷贝配置文件和启动脚本
[root@db03 ~]# cd /service/mysql/support-files/
[root@db03 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite '/etc/my.cnf'? y       
[root@db03 support-files]# cp mysql.server /etc/init.d/mysqld
7)初识化数据库
[root@db03 ~]# cd /usr/local/mysql/scripts/
[root@db03 scripts]# ./mysql_install_db --user=mysql --basedir=/service/mysql --datadir=/service/mysql/data
8)配置system管理mysql
[root@db03 scripts]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/service/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000[root@db03 scripts]# systemctl daemon-reload
[root@db03 scripts]# systemctl start mysqld
9)启动数据库
[root@m01 scripts]# /etc/init.d/mysqld start#启动失败,因为mysql文件中很多都是/usr/local/mysql,我们需要替换
[root@db03 mysql]# sed -i 's#/usr/local/mysql#/service/mysql#g' /etc/init.d/mysqld /service/mysql/bin/mysqld_safe #修改配置文件
[root@db03 mysql]# vim /etc/my.cnf
basedir = /service/mysql
datadir = /service/mysql/data#再次启动
[root@db03 mysql]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/service/mysql/data/db03.err'.SUCCESS! 
10)配置环境变量
[root@db03 scripts]# vim /etc/profile.d/mysql.sh
export PATH=/service/mysql/bin:$PATH[root@db03 mysql]# source /etc/profile
11)确认启动
[root@m01 scripts]# ps -ef | grep mysql
mysql     12886      1  2 03:10 ?        00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
root      12921  10636  0 03:11 pts/1    00:00:00 grep --color=auto mysql
[root@m01 scripts]# netstat -lntp   
tcp6       0      0 :::3306                 :::*                    LISTEN      12886/mysqld        

二、数据库基本操作

1.数据库设置密码

[root@db02 scripts]# mysqladmin -uroot password 123

2.使用密码登录

#1.正确的方式(不规范)
[root@db02 scripts]# mysql -uroot -p123
[root@db02 scripts]# mysql -u root -p123#2.错误的方式
[root@db02 scripts]# mysql -uroot -p 123
#官网上说-p或者--password参数与密码之间不能有间隔或多于字符#3.正确且规范的方式
[root@db02 scripts]# mysql -u root -p
Enter password:

3.查询用户

mysql> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
|      | db02      |
| root | db02      |
|      | localhost |
| root | localhost |
+------+-----------+
6 rows in set (0.00 sec)

4.删除用户(优化)

mysql> drop user root@'::1';
Query OK, 0 rows affected (0.00 sec)mysql> select user,host from user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
|      | db02      |
| root | db02      |
|      | localhost |
| root | localhost |
+------+-----------+
5 rows in set (0.00 sec)

三、企业误删除用户故障

1.不小心删除了mysql所有用户

mysql> delete from mysql.user where 1=1;
Query OK, 5 rows affected (0.00 sec)#删除用户以后还是可以登陆,但是不要重启

2.解决方式一:

1)停止数据库
#抽根烟冷静一下
[root@db02 scripts]# systemctl stop mysqld
2)跳过授权表和网络启动
[root@db02 scripts]# mysqld_safe --skip-grant-tables --skip-networking &
3)插入新的用户
insert into mysql.user values ('localhost','root',PASSWORD('123'),
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'',
'',
'',
'',0,0,0,0,'mysql_native_password','','N');
4)重启启动数据库
[root@db02 scripts]# mysqladmin shutdown
200709 16:27:19 mysqld_safe mysqld from pid file /usr/local/mysql/data/db02.pid ended
[1]+  Done                    mysqld_safe --skip-grant-tables --skip-networking
[root@db02 scripts]# systemctl start mysqld

3.解决方式二:

1)停止数据库
#抽根烟冷静一下
[root@db02 scripts]# systemctl stop mysqld
2)跳过授权表和网络启动
[root@db02 scripts]# mysqld_safe --skip-grant-tables --skip-networking &
3)授权一个新用户
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql> grant all on *.* to root@'localhost' identified by '123' with grant option;
Query OK, 0 rows affected (0.00 sec)

 


http://www.mrgr.cn/news/3519.html

相关文章:

  • SpringBoot响应式编程(3)R2DBC
  • [Meachines] [Medium] poison LFI+日志投毒+VNC权限提升
  • 【物联网设备安全】物联网设备的安全管理与防护措施
  • seq2seq编码器encoder和解码器decoder详解
  • 「字符串」详解AC自动机并实现对应的功能 / 手撕数据结构(C++)
  • 【Hot100】LeetCode—206. 反转链表
  • Linux系统-打包重定向/管道符/进程shell脚本
  • C语言文件操作
  • 【秋招笔试】8.18大疆秋招(第一套)-后端岗
  • 作品集图片美化处理网站推荐
  • 初识C++:开启C++之旅
  • redis string类型
  • CSS的:definite和:indefinitte伪类:探索确定性与不确定性的元素选择
  • InputApc()函数是如何调用ProcessKeyboardInput()函数的?
  • Android 架构模式之 MVP
  • Linux --- 文件系统
  • reactive 和 ref 的区别和联系
  • 二十二、状态模式
  • 【Orb-Slam3学习】 ORBextractor类主要成员函数调用关系
  • windows C++- Com技术简介(上)