MySQL 单实例安装等操作

---MySQL 单实例安装等操作

安装注意以下几点
1.软件安装目录: /usr/local/mysql
2.数据存放目录: /data/
3.配置文件存放目录:/etc/my.cnf

启动过程
1.需要初始化
2.启动

--如果想MySQL 开机自动启动,需要在 /etc/rc.local 文件中添加启动MySQL的命令
/usr/local/mysql/bin/mysqld_safe --defaults-file=/ect/my.cnf &

一、MySQL单实例安装
cd /usr/local/
1.解压MySQL二进制包
tar -zxvf mysql-5.6.16-linux-glibc2.5-x86_64.tar.gz

-v ,输出详细解压内容

2.删除解压前的 tar 包
rm -rf mysql-5.6.16-linux-glibc2.5-x86_64.tar.gz

3.更名
mv mysql-5.6.16-linux-glibc2.5-x86_64/ mysql
--注:为何要改名?不让别人轻易看到版本信息

4.创建MySQL用户
useradd mysql

5.给MySQL安装目录授权
chown -R mysql:mysql mysql

6.创建数据存放目录
mkdir -p /data/mysql

cd /data/
ls --返回 mysql

7.给MySQL数据存放目录授权

chown -R mysql.mysql mysql

8.上传 MySQL 配置文件 my.cnf(单实例);删除系统自带my.cnf ,并将上传文件 更名为 :my.cnf

cd /ect/
rm -rf my.cnf
rz my.cnf_dan

mv my.cnf_dan my.cnf

9.初始化数据库

cd /usr/local/mysql/scripts/

./mysql_install_db --help

./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/ --defaults-file=/ect/my.cnf --user=mysql

10.配置环境变量并且生效
vim /etc/profile

文本行尾添加一行内容:
export PATH=$PATH:/usr/local/mysql/bin

source /etc/profile

11.启动数据库

cd /usr/local/mysql/bin/

pwd
/usr/local/mysql/bin

./mysqld_safe --help

./mysqld_safe --defaults-file=/etc/my.cnf & ---后台启动数据库

12.查看 MySQL进程

ps -ef|grep mysql


[root@node1 bin]# ps -ef | grep mysql

root 2218 2028 0 18:54 pts/0 00:00:00 /bin/sh ./mysqld_safe --defaults-file=/etc/my.cnf
mysql 2845 2218 0 18:54 pts/0 00:00:01 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql
--plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/error.log --open-files-limit=3072 --pid-file=/data/mysql/node1.pid --socket=/tmp/mysql.sock --port=3306
root 23915 2028 0 19:17 pts/0 00:00:00 grep mysql

[root@node1 bin]# cat /data/mysql/node1.pid

2845

mysql是一个单进程多线程的数据库,这唯一的进程就是pid

oracle是一个多进程的数据库

 

---安装过程遇到的报错

 

---启动数据库
cd /usr/local/mysql
cd bin
./mysqld_safe --help
--------default-file 默认配置文件
./mysqld_safe --default-file=/etc/my.cnf & ----后台启动

 

---查询是否启动成功
ps -ef|grep mysql

 

----报错
/data/mysql/node3.pid ended --- 这个进程 结束了;也就是执行失败了;看看为啥失败

 

vi /data/mysql/error.log
[ERROR] Fatal error :Can't open and lock privilege tables :table 'mysql.user' doesn't exist

 

---原因是没有进行初始化

 

--初始化权限表
cd /usr/local/mysql

 

./scripts/mysql_install_db --help

 

./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --default-file=/etc/my.cnf

 

---上面命令出现两个OK 表示成功

 


cd /data/mysql
ls ---查询多了 mysql test 等库相关信息

 

--启动数据库
cd /data/mysql
./bin/mysqld_safe --help

 

./bin/mysqld_safe --default-file=/usr/local/mysql &

 


----又报错
/data/mysql/node3.pid ended --- 这个进程 结束了;也就是执行失败了;看看为啥失败

 

vi /data/mysql/error.log

 

Aborting 上面报

 

'data/mysql/mysql-bin.index' not found (Errcode:13-permission denied)

 


---权限问题

 

cd /data/mysql
ll ---发现 mysql-bin.*** 属主属组都是root

 

---原因是刚才创建授权表的时候使用的 root用户

 

cd /usr/local/mysql

 

./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --default-file=/etc/my.cnf

 

---此动作应该 mysql 用户执行

 

./scripts/mysql_install_db --help

 

./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --default-file=/etc/my.cnf --user=mysql

 

--如果确实忘记添加 --user=mysql 则手动修改 文件 对应的属主属组

 

cd /data
chown -R mysql.mysql mysql

 

--验证一下

 

cd mysql

 

ls

 

---重新启动
cd /data/mysql
./bin/mysqld_safe --help

 

./bin/mysqld_safe --user=mysql --default-file=/usr/local/mysql &

 

---再次报错
/data/mysql/node3.pid ended --- 这个进程 结束了;也就是执行失败了;看看为啥失败

 

vi /data/mysql/error.log

 

ERROR /usr/local/mysql/bin/mysqld : unknown variable 'default-file=/etc/my.cnf

 

--不识别
--原因:在 ./bin/mysqld_safe 后面必须 紧跟着 --default-file=/usr/local/mysql 否则报不识别

 

---重新启动
cd /data/mysql
./bin/mysqld_safe --help

 

./bin/mysqld_safe --default-file=/usr/local/mysql --user=mysql &

 

---终于启动成功!

 

ps -ef|grep mysql

 

 

 

13.登陆数据库
mysql


mysql>

 

二、关闭数据库的两种方法
1.正常关闭
cd /usr/local/mysql/bin
mysqladmin shutdown

ps -ef|grep mysql

--再次启动数据库

./mysqld_safe --defaults-file=/etc/my.cnf &

--或者绝对路径启动

/usr/local/mysql/bin/mysqld_safe --defaults-file=/ect/my.cnf &

ps -ef | grep mysql


2.非正常关闭数据库

ps -ef | grep mysql

kill -9 28576 27949

ps -ef | grep mysql


3.修改密码等

初始化之后会自动生成MySQL数据库,是系统自动创建的

mysql>show databases;
Database
information_schema
mysql
performance_schema
test

---创建新的 数据库
create database dba;

mysql>show databases;
Database
dba
information_schema
mysql
performance_schema
test

--mysql 数据库下面的users 表,记录了用户的密码、权限等

mysql>use mysql;

mysql>show tables;

 

mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| user |
+---------------------------+
3 rows in set (0.00 sec)

 

mysq> select user,host,password from user;

---删除其他的,只保留第一行内容


mysql> select user,host,password from user;
+------------------+---------------+-----------+
| user | host | password |
+------------------+---------------+-----------+
| root | localhost | |
| root | rc-bpm-mysql | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | node1 | |
+------------------+---------------+-----------+
6 rows in set (0.02 sec)

mysql> delete from user where user!='root' or host!='localhost';

mysql>select user,host,password from user;

---设置密码
mysql>update user set password=('root123') where user='root';

mysql> select user,host,password from user;
+------------------+---------------+-------------------------------------------+
| user | host | password |
+------------------+---------------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------------------+---------------+-------------------------------------------+

--注:现在 root的密码已经是新的了:root123
切密码设置之后需要刷新才能使密码生效
flush privileges;

---此时再次登陆数据库,不输入密码就会报错

---输入密码后可以正常登陆 (修改密码后一定要使用 mysql -uroot -p 这样的方式登陆,这样别人看不见密码!!!)
mysql> exit
Bye
[root@nodel ~]# mysql -uroot -p


四、root密码管理权限丢失怎么办?(超管权限密码)

ps -ef|grep mysql

---密码丢失之后是无法正常关闭数据库的;只能使用 kill 进程的方式 关闭数据库(非正常形式关闭数据库)

--注:如果知道密码可以在 mysqladmin shutdown 后面跟 -ppassword

[root@nodel ~]# mysqladmin shutdown
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'

---此时只能 kill -9 9549

或者:
--跳过授权的tables 表 ,也就是跳过了 mysql 库下面的 users 表 启动MySQL

[root@nodel ~]#/user/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables &


---当使用 上面的命令 ,跳过 users 表 此时不适应密码就可以登陆数据库
[root@nodel ~]# mysql

mysql>

---此时在数据库中修改密码,修改完毕后 还是 使用 kill的方式 ,杀掉数据库 杀掉进程 。重新登陆数据库

mysql>user mysql ;

mysql>update user set password=password('root123') where user='root';

mysql> flush privileges;

mysql>exit;

---非正常模式关闭数据库

ps -ef|grep mysql

kill -9 ...

---使用新密码登陆数据库 密码: root123

[root@nodel ~]#/user/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

[root@nodel ~]# mysql -uroot -p
Enter password:

 


五、MySQL 多实例安装
1.上传多实例 的 my.cnf 文件 ,并将 单实例 的更名保留 (也可以分成不通的配置文件,一个数据库对应一个,启动按照单实例一个一个启动就可以)

cd /etc
mv my.cnf my.cnf_single.cnf

ll my.*
my.cnf
my.cnf_single.cnf

2.停掉 单实例 数据库

ps -ef|grep mysql

kill -9 ....

3.创建多实例存放目录,并且授权

cd /data/
ls
mysql

mkdir mysql_3306
mkdir mysql_3308

chown -R mysql.mysql:mysql_*

4.初始化 MySQL 数据库,先 指定 3306 实例

cd /usr/local/mysql/scripts/
./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql_3306/ --defaults-file=/etc/my.cnf --user=mysql

---在指定 3308

./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql_3308/ --defaults-file=/etc/my.cnf --user=mysql

5.打开 3306 和3308 库
--注: 开启多实例和单实例 数据库 使用 的 命令是 不一样的
多实例使用 : ./mysqld_multi start port
单实例使用 : ./mysqld_safe --defaults-file=/etc/my.cnf &

cd /usr/local/mysql/bin/
./mysqld_multi start 3306
./mysqld_multi start 3308
./mysqld_multi report

ps -ef|grep mysql

6.进入到 3306 和 3308 库
--注: 进入多实例 使用 套接字 socket的方式 :mysql -S /tmp/mysql_3306.sock

mysql -S /tmp/mysql_3306.sock
mysql -S /tmp/mysql_3308.sock

---多实例:存在于不想花钱的公司,在一台服务器上安装两套MySQL
---这种情况确实很少见,一般是一台安装一个MySQL

 

六、MySQL多实例改回单实例

1.停掉多实例数据库
cd /usr/local/mysql/bin
./mysqld_multi stop 3306
./mysqld_multi stop 3308
./mysqld_multi report

ps -ef|grep mysql

2.修改配置为 单实例的配置文件

cd /etc

mv my.cnf my_multi.cnf

mv my.cnf_single my.cnf

3.启动单实例数据库
--单实例启动命令
./mysqld_safe --defaults-file=/etc/my.cnf &

4.进入数据库
mysql -uroot -p

mysql>

 

七、远程连接MySQL数据库

--注:root 用户 只是本地用户,不用用它作为远程用户
--一般情况使用的都是 TCPIP 方式 远程连接数据库

1.在数据库创建用户并授予远程连接权限
mysql>grant all privileges on *.* to 'ss'@'192.168.1.%' identified by '123456';


-- 第一个 * 代表库,'.' 这个代表 这个数据库下的所有表 ,最后一个是 通配符

flush privileges;


2.另一台服务器远程连接 MySQL数据库

--注: 另一台服务器也需要安装 MySQL ,因为是将其当作 客户端来使用 进行远程连接

[root@node2 ~]#mysql -uss -p123456 -h192.168.1.1


八、修改默认端口号3306为其他端口号

--注:在生产中端口号不用使用默认的3306端口,尽可能的改成别的

1.更改端口号,修改配置文件就行

vi /ect/my.cnf

:%s /3306/3308/g

--保存退出

2.关闭数据库

ps -ef|grep mysql

kill -9 ...

3.重启启动数据库

cd /usr/local/mysql/bin/
./mysqld_safe --defaults-file=/etc/my.cnf &

4.再次使用另一台服务器远程连接 此数据库;此时报错:提示无法连接,原因是 端口号被更改,需要手动指定

mysql -uss -p123456 -h192.168.1.1 -P 3308

5.修改成默认端口

vi /etc/my.cnf

:%s/3308/3306/g

--保存退出

---kill 数据库,重新启动

ps -ef|grep mysql

kill -9 ...

重启启动数据库

cd /usr/local/mysql/bin/
./mysqld_safe --defaults-file=/etc/my.cnf &

--再次尝试远程连接,不再需要指定端口号


[root@node2 ~]#mysql -uss -p123456 -h192.168.1.1

mysql>


----注意:也可以使用 套接字 mysql.sock 这种方式登陆数据库,但是只能用在本地,是和root配合使用

ps -ef|grep mysql --找到 socket

mysql -uroot -p1234 -S /tmp/mysql.sock

---root 用户 对应 的host 就是 localhost ,其他用户对应的host 可以是 IP 地址,也可以是一个网段,但千万不能是 %

--注:一般针对 的权限 控制在 OA 系统 比较常见。比如说 只能看见 考勤记录,但是不能看见 薪资情况

---SQL 注入脚本 :无限循环

select * from t;
sleep(100000000);

 

转载于:https://www.cnblogs.com/ss-33/p/11227467.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值