mysql mariadb数据库 安装 初始化 去掉 免密登录

一. mariadb安装

mariadb数据库用于centos的官方指定数据库换源后直接使用命令安装即可

1
2
3
4
# mariadb安装
yum install mariadb mariadb-server -y
systemctl start mariadb
systemctl status mariadb

二. mysql安装

mysql是ubuntu指定的官方数据库 ubuntu直接使用apt命令安装即可 或使用脚本编译安装

1
2
3
4
# 安装mysql5.7 换源后直接安装
# 安装mysql5.7服务端 安装mysql5.7客户端 安装完成后直接输入mysql即可登录
sudo apt-get install mysql-server-5.7 mysql-client-5.7
systemctl restart mysql

image-20230524133707604

centos rpm安装 (install_mysql.sh)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/bash
#环境:centos7
#版本: mysql5.7
#set -e
install_rpm() {
echo -e "\033[36m 开始执行安装mysql 执行中################## \033[0m"
sleep 5
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
echo -e "\033[36m 开始安装mysql5.7 \033[0m"
yum -y install mysql-community-server
}
mysql_information() {
systemctl start mysqld
systemctl status mysqld
echo -e "\033[36m 登录信息写入: passwd.txt 文件 \033[0m"
# 其他版本获取初次密码 按需修改如mysql8.0 在debin.cnf
cat /var/log/mysqld.log |grep 'temporary password' > passwd.txt
passwd1=`cat passwd.txt |awk 'NR==1{print $11}'`
echo "账户: root \n
密码:${passwd1}" >>passwd.txt
echo -e "\033[36m 初始账户是: root 初始密码是:${passwd1} \033[0m"
}
init_passwd() {
#passwd=""
read -p "输入需要更改的密码 建议密码包含 大小字母 小写字母 数字 标准字符:" passwd
echo "
进入引导 ..... \n
引导成功. \n
0. 输入0获取帮助信息 \n
1. 输入1自动更改初始密码为: ${passwd} \n
2. 输入2退出 \n"
while :
do
read -p "请输入数字0 1 2 : " n
case $n in
0)echo -e "\033[36m 初次登录时请更改密码 \n
更改初始密码命令: ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';\n
或 \n
1.输入1 自动执行更改密码,初始密码为: ${passwd} \n
2.输入2 退出 \n \033[0m"
continue
;;
1)echo "\033[36m 开始初始化密码 \033[0m"
User="root"
chushi_Passwd=`cat passwd.txt |awk 'NR==1{print $11}'`
change_passwd="ALTER USER root@localhost IDENTIFIED BY '${passwd}';"
$(which mysql) -u${User} --connect-expired-password -p${chushi_Passwd} -e "${change_passwd}
flush privileges;"
[ $? = 0 ] && echo "初始化密码成功" || echo -e "\033[33m 初始化失败 原因:登录密码可能有特殊字符建议输入0查看帮助并手动执行 \033[0m"
continue
;;
2)echo -e "\033[36m 退出 \033[0m"
break
;;
*)echo -e "\033[33m 输入错误请重新输入 \033[0m"
continue
;;
esac
done
}
main() {
install_rpm
mysql_information
init_passwd
}
main

image-20230524172742886

windows server 2019安装mysql8.1.0 >> 见下方链接

windows server 2019安装mysql8.1.0

三. 数据库安装后初始化

环境:mysql Ver 8.0.33-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))

概览

1.初次安装mysql时可直接在命令行输入mysql即可登陆mysql
2.也可使用生成的初始密码登陆存放初始密码文件路径/etc/mysql/debian.cnf 后面此文件可能会消失没有初始化之前先保存

image-20230608111310237

1.初始化操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 登录之前操作:
mysql_secure_installation 数据库初始化详见“docker_mariadb/mysql安全策略” (可选)
此时直接输入命令:mysql即可登录
root登录之后操作:
# 首先修改root密码
ALTER USER root@localhost IDENTIFIED BY '123456';
# 创建远程登陆用户
CREATE USER 'gegewu'@'%' IDENTIFIED BY '123456';
# 授权远程登录用户 (若需要远程登录还需要编辑:/etc/mysql/mysql.conf.d/mysqld.cnf 注释 bind=127.0.0.1)
GRANT ALL PRIVILEGES ON *.* TO 'gegewu'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
# mysql8版本则使用下面cmd授权远程登陆
grant all on *.* to 'gegewu'@'%'; ( 赋予相应的权限 *.*代表所有的数据库都可以访问 )
# 刷新
flush privileges;

image-20230524141717078

第一次使用ALTER修改密码后 再次修改密码需要使用SET语句

1
2
3
4
5
6
7
8
9
10
11
12
13
# 修改数据库密码:
SET PASSWORD FOR root@'localhost' = password('123456');
# 或者数据库外修改
mysqladmin -u root password '123456'
mysqladmin -u root -p '123456' password '123456'
# 授权本地zabbix用户操作所有数据库的所有权限:
grant all on *.* to zabbix@localhost identified by "123456";
# 对单独库的权限:
grant all privileges on zabbix.* to zabbix@localhost;
# 创建数据库字符utf-8
create database zabbix character set utf8 collate utf8_bin;
# 刷新:
flush privileges;

其他常用语句

1
2
3
4
5
6
7
# 设置和更改密码
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
# 如果是当前登陆用户用:
SET PASSWORD = PASSWORD("newpassword");
例子: SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");
# 删除用户
DROP USER 'username'@'host';

创建远程登录用户:

image-20230524134007437

image-20230524141114419

2.取消不需要输入密码 输入mysql直接登录

mysql5.7只需要此一行即可完成配置

1
2
3
4
# 关闭免密登录
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND host = 'localhost';
# 刷新
FLUSH PRIVILEGES;

https://blog.csdn.net/qq_45083975/article/details/120188794

(1).修改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf 加入 在这个配置文件中的 [mysqld] 这一块中加入 skip-grant-tables
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
skip-grant-tables    # 增加这一句话
# 作用:可以跳过验证,不用密码登录进入 MySQL 重启 MySQL 服务
systemctl restart mysql

(2).输入命令直接登录mysql 遇见输入密码的提示直接回车即可,进入 MySQL 后,分别执行下面三句话

1
2
3
4
5
6
7
8
9
10
# 登录mysql
mysql
# 或者
mysql -u root
# 或者
mysql -u root -p
# 输入命令直接登录mysql 遇见输入密码的提示直接回车即可,进入 `MySQL` 后,分别执行下面三句话
use mysql;
update user set authentication_string=password("你的密码") where user="root";
flush privileges;

(3).重新进入到 mysqld.cnf 文件中,把刚开始加的 skip-grant-tables 这条语句给注释掉

1
2
3
4
5
6
# 注释此句
vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
#skip-grant-tables  
# 重启mysql
systemctl restart mysql

再次在控制台输入 mysql -u root -p ,此时就得输入密码,才可以登录 MySQL 了。

(4).如果还是可以直接登录则 将skip-grant-tables的注释重新打开 输入mysql登录数据库

1
2
3
4
5
6
7
8
9
# 查看详情
use mysql;
select user,plugin from user;
# 可以看到root的plugin字段是auth_socket 改为 mysql_native_password 即可
update user set authentication_string=password("你的密码") ,plugin='mysql_native_password' where user='root';
flush privileges;
select user, plugin from user;
# 此时注释skip-grant-tables重启数据库即可解决
systemctl restart mysql

image-20230524140334014

image-20230524140833380

四. 扩展

image-20230524141955266

结语祝好!