linux作业--第十周
1、在阿里云服务器搭建openv-p-n(有条件的同学再做)
2、通过编译、二进制安装MySQL5.7
编译安装MySQL5.7
安装相关包
yum -y install libaio numactl-libs
创建用户和组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
准备数据目录
mkdir -p /data/mysql
chown mysql:mysql /data/mysql
准备程序文件
tar xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C /usr/local
cd /usr/local/
ln -s mysql-5.7.31-linux-glibc2.12-x86_64/ mysql
chown -R root.root /usr/local/mysql/
准备环境变量
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
准备配置文件
cp /etc/my.cnf{,.bak}
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
初始化数据库文件并提取root密码
方式1: 生成随机密码
[root@localhost ~]# mysqld --initialize --user=mysql --datadir=/data/mysql
[root@localhost ~]# awk '/temporary password/{print $NF}' /data/mysql/mysql.log
pkYeqDc9t+#/
方式2: 生成 root 空密码
mysqld --initialize-insecure --user=mysql --datadir=/data/mysql
准备服务脚本和启动
方式一:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
方式二:
使用systemd管理mysql
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
方式三:
不借助工具启动
[root@localhost ~]# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
修改口令
#修改前面生成的随机密码为指定密码
mysqladmin -uroot -p'pkYeqDc9t+#/' password P@ssw0rd
#修改前面生成的空密码为指定密码
mysqladmin -uroot password P@ssw0rd
测试登录
[root@localhost ~]# mysql -uroot -p'P@ssw0rd'

配置MySQL中免去密码校验进入数据库
vim /etc/my.cnf
[mysqld]
skip-grant-tables
重启mysql服务
免密登录MySQL
然后再次进入到终端当中,敲入 mysql -u root -p 命令然后回车,当需要输入密码时,直接按enter键,便可以不用密码登录到数据库当中
修改默认的密码
mysql> alter user root@'localhost' identified by 'P@ssw0rd';
Query OK, 0 rows affected (0.00 sec)
或
set password for 'username'@'host' = password('newpassword')
若出现以下错误:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
则执行 flush privileges
mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动mysql服务器,来使新设置生效。
源码编译安装
安装相关依赖包
[root@localhost ~]# yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel perl-Data-Dumper
准备用户和数据目录
useradd -r -s /sbin/nologin -d /data/mysql mysql
准备数据库目录
mkdir /data/mysql -p
chown mysql.mysql /data/mysql
下载并解压缩源码包
tar xvf mysql-5.6.51.tar.gz -C /usr/local/src
源码编译安装MySQL
cd mysql-5.6.51/
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \ ##mysql程序安装目录
-DMYSQL_DATADIR=/data/mysql/ \ ##数据库数据存放目录
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
make -j 8 && make install 开启多CPU核数编译(sockets)
准备环境变量
echo 'PATH=/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
生成数据库文件 * 重点
cd /apps/mysql/
scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
准备配置文件
cp -b /apps/mysql/support-files/my-default.cnf /etc/my.cnf #先备份再替换
准备启动脚本,并启动服务
cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
3、二进制安装mariadb10.2
mariadb历史版本下载地址
https://mariadb.org/mariadb/all-releases/
创建用户
[root@localhost ~]# useradd -r -d /data/mysqldb -s /sbin/nologin mysql
[root@localhost ~]# getent passwd mysql
mysql:x:997:995::/data/mysqldb:/sbin/nologin
[root@localhost ~]# id mysql
uid=997(mysql) gid=995(mysql) groups=995(mysql)
准备安装包
[root@localhost ~]# tar xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ln -s mariadb-10.2.15-linux-x86_64/ mysql
[root@localhost local]# chown -R root:root mysql/
配置环境变量
[root@localhost ~]# echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh
[root@localhost ~]# . /etc/profile.d/mysql.sh
[root@localhost ~]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
配置mariadb数据目录
[root@localhost ~]# mkdir /data/mysqldb -p
[root@localhost ~]# chown mysql.mysql /data/mysqldb
[root@localhost ~]# ll -d /data/mysqldb/
drwxr-xr-x 2 mysql mysql 6 Jan 27 02:38 /data/mysqldb/
[root@localhost ~]# chmod 770 /data/mysqldb
[root@localhost ~]# ll -d /data/mysqldb
drwxrwx--- 2 mysql mysql 6 Jan 27 02:38 /data/mysqldb
初始化mariadb脚本
[root@localhost mysql]# pwd
/usr/local/mysql
[root@localhost mysql]# scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
Installing MariaDB/MySQL system tables in '/data/mysqldb' ...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:
'./bin/mysqladmin' -u root password 'new-password'
'./bin/mysqladmin' -u root -h localhost.localdomain password 'new-password'
Alternatively you can run:
'./bin/mysql_secure_installation'
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.
You can start the MariaDB daemon with:
cd '.' ; ./bin/mysqld_safe --datadir='/data/mysqldb'
You can test the MariaDB daemon with mysql-test-run.pl
cd './mysql-test' ; perl mysql-test-run.pl
Please report any problems at http://mariadb.org/jira
The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/
配置配置文件
[root@localhost mysql]# cp /etc/my.cnf{,.bak}
[root@localhost mysql]# cp support-files/my-huge.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
[root@localhost mysql]# vim /etc/my.cnf
注:修改sock文件路径后,应该修改文件权限,使mysql用户具有写的权限
建议不要进行修改,保持默认
[root@localhost ~]# setfacl -R -m u:mysql:rwx /usr/local/mysql/
配置启动脚本
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chkconfig --add mysqld
[root@localhost mysql]# service mysqld start
Starting mysqld (via systemctl): [ OK ]
验证mariadb
注:默认为空密码
mariadb安全配置
[root@localhost ~]# mysql_secure_installation
修改sock文件为初始目录
vim /etc/my.cnf

程序编译时初始配置
[root@localhost ~]# /usr/local/mysql/bin/mysqld --print-defaults
/usr/local/mysql/bin/mysqld would have been started with the following arguments:
--port=3306 --datadir=/data/mysqldb --socket=/tmp/mysql.sock --skip-external-locking --key_buffer_size=384M --max_allowed_packet=1M --table_open_cache=512 --sort_buffer_size=2M --read_buffer_size=2M --read_rnd_buffer_size=8M --myisam_sort_buffer_size=64M --thread_cache_size=8 --query_cache_size=32M --thread_concurrency=8 --log-bin=mysql-bin --server-id=1
重启服务
[root@localhost ~]# service mysqld restart
Restarting mysqld (via systemctl): [ OK ]
运行脚本
[root@localhost ~]# mysql_secure_installation
验证: