数据库就是存储数据的仓库
用来存储数据的服务器 就成为数据库服务器
如果之前有mariadb,则需要先卸载,并删除对应的配置与数据:
[root@host50 ~]# systemctl stop mariadb
删除/etc/my.cnf配置文件
此配置文件由RHEL自带的mariadb-libs库提供:
[root@host50 ~]# rm -rf /etc/my.cnf
删除数据
[root@host50 ~]# rm -rf /var/lib/mysql/*
卸载软件包
[root@host50 ~]# rpm -e --nodeps mariadb-server mariadb
警告:/var/log/mariadb/mariadb.log 已另存为/var/log/mariadb/mariadb.log.rpmsave
解压mysql-5.7.17.tar 软件包
[root@host50 ~]# tar -xvf mysql-5.7.17.tar //解压mysql整合包
安装MySQL软件包
[root@host50 ~]# yum -y install mysql-community-*.rpm //yum安装自动解决依赖
启动MySQL数据库服务并设置开机自启(提示:第一次启动,需要初始化数据,会比较慢)
[root@host50 ~]# systemctl start mysqld //启动mysql服务
[root@host50 ~]# systemctl enable mysqld //设置开机自启
[root@host50 ~]# systemctl status mysqld //查看mysql服务状态
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2018-08-28 10:03:24 CST; 8min ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Main PID: 4284 (mysqld)
CGroup: /system.slice/mysqld.service
└─4284 /usr/sbin/mysqld --daemonize --pid-file=/var/r...
8月 28 10:02:56 localhost.localdomain systemd[1]: Starting MySQ...
8月 28 10:03:24 localhost.localdomain systemd[1]: Started MySQL...
Hint: Some lines were ellipsized, use -l to show in full.
[root@host50 ~]# netstat -utnlp | grep 3306
[root@host50 ~]#grep -i 'password' /var/log/mysqld.log
2017-04-01T18:10:42.948679Z 1 [Note] A temporary password is generated for root@localhost: mtoa>Av<p6Yk //随机生成的管理密码为mtoa>Av<p6Yk
[root@host50 ~]# mysql -u root -p'mtoa>Av
...
mysql> //登录成功后,进入SQL操作环境
...
mysql> show database;
mysql> alter user root@"localhost" identified by "123qqq...A"; // 修改密码
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
mysql> show databases; //查看数据库(看到默认的4个库)
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> exit //断开连接
[root@host50 ~]# mysql -uroot -p123qqq...A
mysql> show variables like "validata_password_%"; //查看与密码相关的全局变量
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 | //默认密码长度
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM | //默认密码策略
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.00 sec)
mysql> set global validate_password_length = 6; //修改密码最小长度
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_policy = 0 ; //修改密码策略等级为0
Query OK, 0 rows affected (0.00 sec)
mysql> alter user root@"localhost" identified by "123456"; //修改root密码
Query OK, 0 rows affected (0.03 sec)
mysql> exit; 断开连接
永久配置,修改配置文件
[root@host50 ~]# vim /etc/my.cnf
[mysqld]
validate_password_length = 6 //密码最小长度
validate_password_policy = 0 //密码等级
[root@host50 ~]# systemctl restart mysqld //重启服务
[root@host50 ~]# mysql -uroot -p123456 //登录
mysql> show variavles like "validate_password_length"; //只查看密码长度
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| validate_password_length | 6 |
+--------------------------+-------+
1 row in set (0.00 sec)
mysql> show variables like "validate_password_policy"; //只查看密码策略
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| validate_password_policy | LOW |
+--------------------------+-------+
1 row in set (0.00 sec)
1)修改运行参数并重启服务
如果修改了密码策略必须恢复为默认的默默策略,不然服务无法跳过授权表启动
[root@host50 ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables #逃过授权表
#validate_password_length = 6 //注释掉
#validate_password_policy = 0 //注释掉
[root@host50 ~]# systemctl restart mysqld //重启服务
[root@host50 ~]# mysql //无密码登录
mysql> update mysql.user set authentication_string=password("123qqq...A")
-> where user="root" and host="localhost"; //修改root用户本机登录密码(要符合默认的密码策略)
Query OK, 1 row affected, 1 warning (0.05 sec)
mysql> flush privileges; //让修改生效
Query OK, 0 rows affected (0.02 sec)
3)修改配置文件并重启服务
[root@host50 ~]# vim /etc/my.cnf
[mysqld]
#skip-grant-tables //注释
validate_password_length = 6 //删除注释
validate_password_policy = 0 //删除注释
[root@host50 ~]# systemctl restart mysqld
4)修改后的密码登录
[root@host50 ~]# mysql -uroot -p123qqq...A //登录
# 如果觉得破解后的密码太复杂,也可以用alter user设置简单的密码
1)拷贝管理员能正常登录的数据库服务器的MySQL库覆盖本机的mysql库
把host51主机的mysql库拷贝给host50主机
[root@host50 ~]# scp -r [email protected]:/var/lib/mysql/mysql /var/lib/mysql/
[email protected]'s password: 输入登录51主机的密码
2)重新加载数据
[root@host50 ~]# which pstree || yum -y install psmisc 安装pstree命令软件 可以查看父进程
/usr/bin/pstree
[root@host50 ~]# pstree -p | grep mysqld | head -1 查看父进程pid号
|-mysqld(20261)-+-{mysqld}(20262)
[root@host50 ~]# kill -SIGHUP 20261 发送信号给进程 重新加载
3)使用和host51主机一样的密码连接服务
[root@host50 ~]# mysql -uroot -pNSD123...a 密码登录
mysql>
为了数据库管理员root用户密码安全,可以定期修改密码(比如每隔10天修改一次密码)
注意:修改密码必须要知道旧密码 才能修改新密码
使用 alter user命令也可以修改登陆密码,这个命令前提是 数据库管理员能够登陆服务 才能修改
[root@host50 ~]# mysqladmin -uroot -pNSD123...a password "123qqq...A"
# 第二种方式
[root@host50 ~]# mysqladmin -uroot -p password
Enter password: 旧密码
New password: 新密码
Confirm new password: 再输入一遍新密码
安装phpmyadmin软件
在50主机做如下配置:
1) 部署phpmyadmin 运行环境LAP (A指的是apache P指的是php)
[root@host50 ~]# yum -y install httpd php php-mysql 安装软件
[root@host50 ~]# systemctl start httpd 启动服务
[root@host50 ~]# systemctl enable httpd 开机运行
2)安装phpmyadmin软件
[root@host50 ~]# tar -zxvf phpMyAdmin-2.11.11-all-languages.tar.gz 解压软件
[root@host50 ~]# mv phpMyAdmin-2.11.11-all-languages /var/www/html/phpmyadmin 移动并改名
[root@host50 ~]# cd /var/www/html/phpmyadmin/ 进入安装目录
[root@host50 phpmyadmin]# cp config.sample.inc.php config.inc.php # 拷贝模板文件,生成主配置文件config.inc.php
[root@host50 phpmyadmin]# vim +17 config.inc.php 只需要修改第17行
$cfg['blowfish_secret'] = 'sww123'; 随便添点字符就可以
4)打开真机浏览器,地址栏输入网址 http://192.168.4.50/phpmyadmin
sql> select version(); //查看版本
sql> select user(); //查看登陆用户
sql> select database(); // 查看当前所在的库
sql> show databases; // 查看已有的库
sql> use 库名; //切换库
sql> show table; // 查看一有的表
select 字段名列表 from 库名.表名; # 查找表里的所有数据
select 字段名列表 from 库名.表名 where 查询条件; # 只查询与条件匹配的数据