开发者学堂课程【阿里云上搭建 LAMP 环境实战:Mysql 安装后的配置管理】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/663/detail/11089
Mysql 安装后的配置管理
内容介绍
一、Mysql 安装后的配置管理
二、初始化授权表
三.启动、登录和关闭 MySQL
一、Mysql 安装后的配置管理
使用#clear 命令清一下屏,第一步是修改 MySQL 目录的用户归属,因为默认的MySQL 是安装到了 user 下面 local 下面 MySQL 下面的,那 MySQL 所有的归属我们安装的时候,用的是 root 用户,所以归属是 root 用户,而启动运行这个用户是 MySQL 用户,我们创建的,MySQL 用户没有权限执行 root 用户的,所以要改MySQL 目录用户归属设置为 MySQL用户(叫其他用户也行),但是不可使用管理员用户,不安全。
MySQL 安装后需要调整相应配置文件和参数才能正常运行
a.修改 MySQL 目录的用户归属
#chown -R mysql:mysql /usr/local/mysql
那么下面的所有权限都变成 MySQL 用户的归属了,完成后现在 MySQL 用户有权限对他下面目录进行操作了,比如启动运行、更改、写日志等,但是数据目录在我们安装时候,指定在 cd 下面 date 下面 MySQL 这个目录,
执行命令:#cd /data/mysql就可以看到提示:No Such file or directory(含义为现在没有目录),得做一些初始化数据库的设置,在新版本没有,我们要把目录创建出来,
执行命令:#mkdir-p /data/mysql/现在有这两个目录了,但是现在是用 root 创建的,存在问题,这个数据文件 MySQL 里面增删改查存储的数据都是在这个目录下,那现在也有权限了,同样把数据文件的权限归属设置 Mysql 组和用户,
执行命令:#chown -R mysql:mysql /data/mysql/,
然后依次执行:#ll ->#cd..->#ll->#cd mysql/找到目录,可以看到现在是一个空的目录,是刚刚新创建的,新建完目录后我们下一步初始化数据库,
使用的命令:#cd /user/local/mysql/bin/ 和#ls 可以看到 user 的 local 中 mysql 的 bin 目录下的内容,这里面都是 MySQL 的操作命令,启动数据库 mysqld _safe、关闭管理 mysqlpump、执行客户端 mysql等;当里面我们用到的时候,后面有针对的讲解,学习数据库的管理,这里面讲解能用到的命令。
如果想初始化数据库,先回到当前目录:#cd -之后执行#/usr/local/mysql/bin/mysqld --initialize --user=mysql \ --basedir=/usr/local/mysql --datadir=/data/mysql命令其中执行 mysqld这个命令,其中执行用户 user 为 mysql 用户,家目录 basedir 为/usr/local/mysql,数据目录 datadir 是这个家目录下的/data/mysql
b.初始化数据库
#mkdir-p /data/mysql/
#chown -R mysql:mysql /data/mysql/
#/usr/local/mysql/bin/mysqld --initialize --user=mysql \
--basedir=/usr/local/mysql --datadir=/data/mysql
上述执行完毕后,输入命令:#pwd和#ls就可以查看目录,如果我们创建完数据库或数据表,都会在其中有体现,根据不同引擎,会创建不同的数据文件,同时一定要注意,在初始化 MySQL8 之后有一个特点:它的连接处理方式改变了,MySQL8.0.17变化和其他的更不一样,有一个是在第一次启动的时候给一个随机的密码,而我们这个 MySQL8.0.17是我们初始化完数据库就会给一个随机的初始化的用户名密码,一定要记住,只有用这个用户才能登录到数据库里面,这样的设置方式比以前的安全多,以前我们装完数据库后。
默认的管理员是 root,密码是空,进去之后用户容易没有清空密码,容易泄露数据库,不安全。装完 MySQL 第一件事就应加一个密码,应用第三方程序,要新建用户并且定期修改密码。新版本就是如果密码忘记了就永远登录不了数据库了,所以一般代码有一个提示标记:A temporary passwword is generated for root@localhost:MSq.Kr-UKB<P表示其中本地随机给的密码为MSq.Kr-UKB<P,一定要记住!
注意:在初始化数据时,有一个初始秘密一要记下来,要通过个密码进行第一次登录。
[Server] A temporary password is generated for root@localhost: v:Mf<E8q0wlc(此为随机给的密码,每回密码不同)
二、初始化授权表
c.修改配置文件,并初始化授权表
#vi/etc/my.cnf
[mysqld]
datadir=/data/mysql
basedir=/user/local/mysql
socket=/tmp/mysqld.sock
#Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
# Settings user and group are ignored when systemd is used.
#If you need to run mysqld under a different user or group,
#customize your systemd unit file for mariadb according to the
#instructions in http://fedoraproject.org/wiki/Systemd
[mysald_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=lvar/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
现在数据库有了,数据库管理程序也有了,还无法启动,还需要初始化授权表。
首先查看 mysql 默认在 etc 的 my.cnf 中的配置文件,输入命令:#vi /etc/my.cnf 后来修改添加其中的目录,其中必须有的几个目录修改:MySQL 的数据目录 datadir 改为/data/mysql在根目录下,添加基础目录 basedir=/user/local/mysql,socket 文件也需要指定,因为在其指定哪个 socket 启动时候会生成哪个 socket,别的软件比如PHP启动时也会通过sock连接到这个数据库,将其 socket 放到临时目录下,更改 socket 内容为socket=/tmp/mysqld.socket。其中 socket=/tmp/mysql.socket 写做 mysql 也可以。
MySQL 启动的错误日志会写入:log-error 中;进程管理写进 pid-file 中,这两个文件可以改也可以不改,但是权限一定要设置了,因为运行 MySQL 是 MySQL 用户在运行,而上面的两个文件是系统的权限,Linux 操作系统重启后两个目录就会消失,所以需要修改(在此先不做修改,等待之后课程出错再进行修改,以方便同学记忆),最后输入命令:wq!保存刚刚的操作。
d.创建并授权[mysald _safe]的两个选项目录和文件
保存后首先查看是否给进程文件和日志文件做了授权,输入指令:#vi /etc/my.cnf 和#cd /var/log/到目录下进行查看,发现没有目录所以要先创建这两个目录,再授予权限,执行以下命令:
# mkdir /var/log/mariadb(创建log目录文件)
# touch /var/log/mariadb/mariadb.log(创建日志文件)
# chown -R mysql:mysql /var/log/mariadb/(授权,改变所属关系)
# mkdir /var/run/mariadb/最好改个目录,重启这个目录会消失,就不能启动mysql(创建run目录文件)
# chown -R mysql:mysql /var/run/mariadb/
执行以上操作后,输入命令:#ll就可以查看创建完成后的目录。
三.启动、登录和关闭 MySQL
e.启动 MySQL 服务
完成授权目录后,就是启动 MySQL 数据库,启动命令为:/usr/local/mysal/bin/mysqld_safe --user=mysql &,启动失败后再去查找原因:目录是否创建,授权是否成功。
启动后就会将日志和进程写进我们之前授权的文件保存,同时启动用户要注意使用MySQL 用户,而不是 root 用户,因为之前的文件授权全都为 mysql 用户,最后MySQL 启动要在后台启动,否则一直会占用终端,所以要添加&表示后台启动。
用原本源代码的方式去使用和启动 mysql
/usr/local/mysal/bin/mysqld_safe --user=mysql &
最后要判断MySQL是否启动了,输入指令:#netstat -tnl查看端口3306是不是打开即可,打开证明之前的配置没问题。
l 回顾:
配置的过程首先把MySQL的宿主目录的归属关系变成 MySQL 用户,然后初始化数据库密码,一定要记住密码否则启动不了,然后修改配置文件,指定数据目录、基础目录、写日志的文件和进程文件等基础的。之后将日志授权表授权,然后开始启动MySQL 服务。
f.登录 MySQL
Mysql本身是不支持连接,但此时使用的是SSH本机连接是可以进行的,输入登录的命令:#/usr/local/mysal/bin/mysql -u root 和Enter password: v.Mf<E8qowlc。
#/usr/local/mysal/bin/mysql -u root -p
(可直接在其后面输入密码,或者回车,提示下一行,输入密码)
Enter password: v.Mf<E8qowlc(密码为需要记忆的随机密码)
之后进入MySQL的管理界面,在此可以任意输入操作命令相当于mysql命令的终端,但是此时还无法操作任何命令,如:输入指令:show databases(查看数据库的个数)会发现提示错误,原因是因为新版的MySQL第一次登录进来会让用户强制更改密码,更改之前的随机密码后才可以执行有效操作命令。
输入指令alter user root@'localhost' identified by "123456";更改 locathost 用户密码为123456,每条命令用分号结束。提示:Query OK,就可以进行任何像执行的命令。
mysql>
进入之后必须先更改密码才能操作
mysql>alter user root@'localhost' identified by "123456";
mysql>show databases;
mysql>use test;
mysql>show tables;
mysql>exit
比如查看 MySQL 一些基本的状态:mysql>\s;查看其中的版本号、操作系统、当前用户、当前版本、字符集、启动时使用的 socket 连接是什么等等,再比如:mysql>show databases;查看有多少数据库,mysql>user mysql和mysql>show tabases;进入到MySQL数据库查看有多少表,以及查看授权中的表:mysql>show tables;之后可以使用命令:select *from user\G查到用户表里面有多少记录,根目录的用户表的文件。
使用:mysql>desc user;就可以查看表的结构包含主机用户等等,同时如果只想要查找两列,就可以使用命令:select Host,User from user;将主机和用户从 usr 表中查找出来,最后使用 mysql>exit;就可以退出,同时要记住刚才修改的新密码。
g.关闭 MySQL 服务
关闭 mysql,最好别用 killall 方式,容易将写入的数据破坏。采用以下语句即可:
#/usx/local/mysql/bin/mysqladmin -uroot -p shutdown
Enter password:123456(输入的新密码)
关闭之后,再输入:#netstat -tnl查看端口进程,就可以看到3306被成功关闭了。
最后要是再想启动MySQL重复之前的操作,再输入命令:/usr/local/mysal/bin/mysqld_safe --user=mysql &
后台启动即可。同样使用#netstat -tnl查看端口进程,就可以看到3306被成功启动。
具体的操作也可以用图形化的PHP之类的操作,但是MySQL是必备的技能,之后的如何操作、管理、设计再讲解。