第4节. mysql基本使用
空的意思是用户名随便写,上图👆框错了哦,user为空的是最后两行,PUBLIC本身就是用户名
空用户进来的权限👆
进行安全加固
这是我之前用直接yum的mariadb,是有安全加固脚本的
但是新的mariadb版本改动了一下,👇
https://mariadb.com/kb/en/mysql_secure_installation/
结合文章,看来软连接就是过渡一下用的,现在的新版本呢都没有mysql_secue_installation这个软连接文件了。
https://mariadb.com/kb/en/authentication-from-mariadb-104/
文中说“Remember, the best way to keep your password safe is not to have one!”
服了U~
回到这里学习的安全加固脚本:
跑一下
10.11版的情况
视频中的低版本👇,主要区别是swith to unix_socket authentication吧,反正上面走完root密码是不生效的,因为有插件要改一下。emm不过,人家官网说了没有密码就是最安全的密码。
脚本到这里已经起作用了,要密码登入了,当然我说的是老版本
这个centos7.localdomain是禁止root远程登入干掉的,因为它担心有人使用域名解析将cento7.localdomain解析成远端mysql的IP地址,从而使用这个hosts进来。
回到我的新版mariadb
密码已经改好了,如果非要使用root密码生效,则需要
https://blog.csdn.net/tiny_du/article/details/123924376
https://www.orcy.net.cn/1410.html
修改global_priv里的unix_socket
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("你的密码");
文中的这个方法,记不清我之前是不是直接修改了global_priv里的内容。
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("xxxxx");
然后再看
我再找找文章
https://blog.whsir.com/post-6795.html
这个靠谱,在配置文件中禁用unix_socket
不过是不是可以直接修改gloabl_priv里的参数的,好像没有唉,👇官网也是这个方法:
https://mariadb.com/kb/en/authentication-plugin-unix-socket/
然后\G的排版看下
-uroot不写也行,默认就是root,你换linux的用户,也一样,Pia!(o ‵-′)ノ”(ノ﹏<。)
一样个毛👇
Pia!(o ‵-′)ノ”(ノ﹏<。)
mysql -uroot -pxxx -h a.b.c.d 这个是完全命令
注意-h 127.0.0.1和-h localhost不一样,前者是走的tcp/ip socket,后者是走的unix_socket文件socket
下图虽然是本地就是192.168.126.129自己登自己,但是还是判定为root@django001,解析成了hostname所以不对了。
尝试改host为192.168.126.129看看,果然被反向解析成了hostname了
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.126.129' IDENTIFIED BY 'Cisc0@123' WITH GRANT OPTION;
然后将192.168.126.129改成hostname也就是django001看看,不行,就是IP,虽然显示的是root@django001,但是只是反向解析的结果,只认IP。
报错的情况:update不行?
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("xxxxx");
或者使用SETPASSWORD
https://mariadb.com/kb/en/set-password/
Example
For example, if you had an entry with User and Host column values of 'bob
' and '%.loc.gov
', you would write the statement like this:
SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
If you want to delete a password for a user, you would do:
SET PASSWORD FOR 'bob'@localhost = PASSWORD("");
查看的细节
新版本就是-server,-client这种
老版本就是
这个就是client
mysql-client里的mysqldump很关键
mysqladmin的用法
-?等价于--help
检测mysql服务是否正常
远程测试要密码和端口:
超时时间要设置下的
实测是2m的超时时间
调整探测时间上限方法就是--connect-timeout
https://dev.mysql.com/doc/refman/8.0/en/mysqladmin.html
但是密码要想办法隐藏好,否则监控存在密码泄露风险。
关闭服务:
数据的进程,一定不要用kill来杀,一定不要!!!,杀完就可能起不来了。
改口令
以什么身份user@host 连进去的,就改的谁的密码。
还可以直接创建数据库
不进入交互式的cli方法
mysql -e "show databases"
mysql进入是交互模式,也就是有标准输入的,所以重定向文件内容进去就行了
表格式没了
mysqld_safe 是mysqld的父进程,上图是通过ps auxf看的
pstree -p可见
新版本没有这个safe父进程了
进程是以mysql这个用户运行的。
而该用户是安装程序的时候脚本创建的。
后面源码编译,二进制安装的时候,需要手动创建用户
多实例,也可以同一个版本来做
rpm -ql MariaDB-server可见
端口错开,用户透明,测试环境用
用户账号
_就是等价于regex里的?,可能吧
疑问:172.16.%.%,%匹配任意长度字符,那为啥不写成172.16.%
修改mysql交互模式的提示符
man手册里看
进到/etc/my.conf.d下面,可以看到client.cnf和mysql-clients.conf等文件
打开mysql-clients.conf进行编辑
生效👇
数据库的路径,可以改成LVM里,优点就是可以伸缩空间。
上图还有socket文件的路径,就是mysql -uroot -pxxx 回车走的文件socket
这是日志,进程ID文件
自动补齐
看到没有带任何默认值👇
修改一个选项,然后看下
说明还是可以补的,好吧,
如果源码安装,将来上文提到的路径,就需要自己定义了,包括
1、socket路径
2、数据库路径
3、log日志路径
等
直接连进数据库
-D 可省略
-C 压缩可节省带宽
-e 上文讲过了
-V 版本
-v 明细
上文也做个实验了,127.0.0.1不是走的unix sock而是走的TCP/IP
查看当前用户👇
查看当前版本
注意哦,我这是自己的10.11和视频的5.5混着截图了,意思到了就行
大小写-库名、表名区分大小写,命令和字段不区分大小写
命令不区分大小写
数据名称区分大小写
表名大小写敏感
表里字段也就是列属性不区分大小写
推荐SELECT这种命令也是大写
删库的方式又增加了
配置文件也可以合在一起
通过名称区分
这些配置内容的格式就是上图说的
parameter = value
而value的启用和禁用,又可以有1 ON TRUE等写法如上图所示。
如图配置文件里是不区分_和-的
配置文件路径
优先级上图的从上往下,但是不同的安装方式,优先级的结论不同
不要可以记这些,就是实际使用,配置文件就放一个地方,避免混淆。
维护模式
上图=1可以省略不写,就是=1了
skip-networking=1就关闭了3306,相当于维护模式,外界就连不进来了。
vim /etc/my.conf
再看下端口号就不在了
但是自己可以连
因为走的是unix_socket
配一个配置文件路径
/etc/mysql这个路劲是默认没有的,没有就创建一个
和刚才的配置相反了
重启服务看下
说明/etc/my.cnf是优于/etc/mysql/my.cnf的
二进制安装
二进制安装,配置文件/etc下的XX、用户账号、DB文件 都没有
指定了家目录,就是用来放DB文件的,而/data将来推荐做成LVM
同样的所有者和所有组参考原来的DB文件设置下
文件名有linux字样的的就是二进制的包,大小也不一样,二进制的编译后的肯定大很多。
注意,有个安装路径是固定的,人家编译成二进制的时候就写死了
/usr/local要手动补上的,当初人家configure 编译的时候指定的类路径。
/usr/local/mysql就是当初人家编译的时候指定的路径
这里就是一些mysql的程序
配置文件
二进制安装后有一个模板my-large.cnf复制过来用,然后为了不和/etc/my.cnf冲突,就另起炉灶放到新建的/etc/mysql文件夹下
这就是计划数据的路径,下两行再说是优化的
二进制安装后DB文件时空的,需要生成出来,mysql、test、performance_scheme这些
yum安装其实也是依赖这个脚本生成的
centos7上也能用这个service xxx start,可以参考现在的做成systemctl start xxx的service文件。yum安装的mysql里service文件写法看看。
PATH变量
初始化
源码包编译安装
和二进制差别不大,就是多一步编译
tar解压
cmake编译安装,以前我们都是用configure来弄,这里推荐用cmake,原来的configure make makeinstall也能用,不推荐
支持很多存储引擎,不代表就用得到。