1.配置yum源
下载官方的yum源,以便以后快速安装部署。
[root@master ~]# yum -y install mysql-community-server --downloadonly --downloaddir=/data/yum/mysql-community
[root@master ~]# yum -y install mysql-community-client --downloadonly --downloaddir=/data/yum/mysql-community
[root@master ~]# yum -y install mysql-community-libs --downloadonly --downloaddir=/data/yum/mysql-community
[root@master ~]# yum -y install mysql-community-test --downloadonly --downloaddir=/data/yum/mysql-community
[root@master ~]# yum -y install mysql-community-common --downloadonly --downloaddir=/data/yum/mysql-community
[root@master ~]# yum -y install perl-JSON --downloadonly --downloaddir=/data/yum/mysql-community
[root@master ~]# yum -y install createrepo
[root@master ~]# createrepo .
[root@master ~]# vim mysql-community.repo
[mysql-community]
name=mysql-community
baseurl=file:///data/yum/mysql-community/
gpgcheck=0
enabled=1
2.yum安装
[root@master ~]# yum -y install mysql-community-*
3.修改配置文件
[root@master ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mariadb/mysql-community
#建议不要改,因为某些应用程序,默认sock文件就是在这个位置
socket=/var/lib/mysql/mysql.sock
user=root
symbolic-links=0
#参数报错
#validate_password_policy=LOW
log-error=/var/log/mysqld.log
#此处的pid-file要和服务文件中的PIDFile一致起来
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
#要和mysqld块中的socket一致起来
socket=/var/lib/mysql/mysql.sock
user=root
[root@master ~]# vim /usr/lib/systemd/system/mysqld.service
[Service]
User=root
Group=root
4.验证安装
4.1 systemctl启动服务
[root@master ~]# systemctl start mysqld
[root@master ~]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2020-03-03 10:31:42 CST; 1min 38s ago
...........
4.2 后台启动服务
[root@master ~]# mysqld&
[1] 41361
[root@master ~]# ps aux | grep mysqld
root 41361 2.2 2.2 1137880 183732 pts/1 Sl 10:33 0:00 mysqld
4.3 不能启动多个后台服务
[root@master ~]# cat /etc/{my1.cnf,my2.cnf}
[mysqld]
datadir=/data/mariadb/mysql-community/my1
socket=/var/lib/mysql/mysql1.sock
user=root
symbolic-links=0
log-error=/var/log/mysqld1.log
pid-file=/var/run/mysqld/mysqld1.pid
[mysql]
socket=/var/lib/mysql/mysql1.sock
user=root
[mysqld]
datadir=/data/mariadb/mysql-community/my2
socket=/var/lib/mysql/mysql2.sock
user=root
symbolic-links=0
log-error=/var/log/mysqld2.log
pid-file=/var/run/mysqld/mysqld2.pid
[mysql]
socket=/var/lib/mysql/mysql2.sock
user=root
[root@master ~]# mkdir /data/mariadb/mysql-community/{my1,my2} /var/lib/mysql/
[root@master ~]# mysql_install_db --datadir=/data/mariadb/mysql-community/my1
[root@master ~]# mysqld --defaults-file=/etc/my1.cnf&
[root@master ~]# mysql_install_db --datadir=/data/mariadb/mysql-community/my2
[root@master ~]# mysqld --defaults-file=/etc/my2.cnf&
Notice:★★★★★★
虽然启动了两个mysqld,但是只有一个进程保留。
[root@master ~]# ps aux | grep mysqld
root 45083 0.3 2.2 1135800 184596 pts/1 Sl 11:23 0:00 mysqld --defaults-file=/etc/my1.cnf
root 45747 0.0 0.0 112712 952 pts/1 S+ 11:28 0:00 grep --color mysqld
Notice1:★★★★
原则上mysqld在后台只能启动1个mysqld进程,也就是说mysqld是单进程运行的服务,不能启动多个进程。可以指定配置文件位置。
mysqld --defaults-file=…
Notice2:★★
数据库、日志等文件夹要手动创建,否则报错。
Notice3:★★★
采用服务第一次启动先初始化数据库,会在配置文件的数据文件位置创建默认数据库,会在/var/log/mysqld.log生成初始密码。
[root@master ~]# cat /var/log/mysqld.log
.............
2020-03-03T02:25:10.313796Z 1 [Note] A temporary password is generated for root@localhost: Xk4rwgl.#Leb
............
Notice4:★★
mysql_install_db在5.7版已被遗弃,可以用mysqld --initialize完成启动和初始化,mysql_install_db初始化数据库时要指定数据文件位置,并且目录为空目录,否则报错。
Notice5:★★
可以使用systemctl stop mysqld停止后台服务
5. 修改root密码
[root@master ~]# mysql -pXk4rwgl.#Leb
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
mysql> alter user 'root'@'localhost' identified by "123456";
mysql> show variables like 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
validate_password_number_count:密码中至少含有的数字个数,当密码策略是MEDIUM或以上时生效。
validate_password_special_char_count:密码中非英文数字等特殊字符的个数,当密码策略是MEDIUM或以上时生效。
validate_password_mixed_case_count:密码中英文字符大小写的个数,当密码策略是MEDIUM或以上时生效。
validate_password_length 参数是密码的长度,这个参数由下面的公式生成
validate_password_number_count+ validate_password_special_char_count+ (2 * validate_password_mixed_case_count)
validate_password_dictionary_file :指定密码验证的字典文件路径。
validate_password_policy :可设为0、1、2,分别代表从低到高的密码强度,此参数的默认值为1,如果想将密码强度改若,则更改此参数为0。
Notice1:★★★★
更改密码策略为LOW,必须为low,否则更改密码不成功。
set global validate_password_policy=0;
Notice2:★★★★
更改密码长度,必须为1,否则更改密码不成功。
set global validate_password_length=1;
密码最小长度为1
[root@master yum.repos.d]# mysql -p123456
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> \q
6. 设置自启动
[root@master ~]# systemctl enable mysqld
————Blueicex 2020/03/02 12:20 blueice1980@126.com