1、首先确保主机的MySQL没有运行
#ss -tnl //查看有没有80端口
或者
#service mysqld stop
2、添加mysql用户和组
#id mysql //首先查看mysql用户是否存在
#groupadd -r -g 306 mysql //添加系统组mysql,并指明组id
#useradd -r -g 306 -u 306 mysql //添加用户,并指明id号
3、下载mariadb并解压
#tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local //根据要求解压到指定目录,如果创建到其他目录下,则需要利用#ln -sv创建符号链接,即通过/usr/local/mysql可以当问到文件
#cd /usr/local
#ln -sv mariadb-5.5.46-linux-x86_64 mysql //创建符号链接
#cd /usr/local/mysql
#ll //查看目录下的文件属主属组
#chown -R root:mysql ./* //递归修改mysql目录下的所有文件的属主为root,属组为mysql
文件中有一个data目录,是用来存放数据库中的数据的,但是数据会逐渐增大,所以需要单独放在一个挂载的磁盘中,
4、添加一个磁盘并进行格式化,本主机单独空了sdb,这里是/dev/sdb2
#fdisk /dev/sdb --> n --> p --> 1 -->+10G -->t -->8e -->w
#partx -a /dev/sdb 告诉内核当前磁盘的分区情况, -a :增加制定的分区或读磁盘新增的分区
# pvcreate /dev/sdb2 // 创建pv
#vgs //查看当前已有的卷组 卷组(Volume Group)将多个物理卷组织成一个整体,屏蔽了底层物理卷细节。在卷组上创建逻辑卷时不用考虑具体的物理卷信息。
#vgcreate myvg /dev/sdb2 创建LVM卷组。
#lvcreate -L 8G -n mydata myvg //创建LVM的逻辑卷。逻辑卷是创建在卷组之上的。逻辑卷对应的设备文件保存在卷组目录下,例如:在卷组"vg1000"上创建一个逻辑卷"lvol0",则此逻辑卷对应的设备文件 为"/dev/vg1000/lvol0"。
#yum install xfsprogs //这里采用xfs文件系统
#modprobe xfs //自动出来可载入模块
#modinfo xfs //查看xfs信息
# mkfs.xfs /dev/myvg/mydata //格式化逻辑卷
或者采用ext4系统
#mke2fs -t ext4 /dev/myvg/mydata
#mkdir /mydata //创建挂载目录
#vim /etc/fstab 添加如下
/dev/myvg/mydata /mydata xfs defaults 0 0
#mount -a
#mount 就可以看到挂载的目录-->/dev/mapper/myvg-mydata on /mydata type xfs (rw)
#cd /mydata
#mkdir data //在分区上创建一个目录
#chown mysql:mysql data //把目录的属主和属组都改为mysql,因为对mysql而言,运行的是mysql用户
5、生成数据库
#cd /usr/local/mysql //mysql安装完成后会有四个数据库,其中有一个mysql数据库是用来存放mysql的原数据的,这个数据库需要使用脚本生成
#ls /scripts //生成脚本在此目录下mysql_install_db
#/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data //指明用户和数据库存放路径,生成数据库
#ls /mydata/data
mysql performance_schema test
6、提供启动服务脚本
mysql#ls support-file 目录下叫mysql.server
mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld //把文件复制到并命名
# chkconfig --add mysqld // 把mysql假如到服务列表中去
chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
此时虽然可以启动,但是还没有配置文件
7、准备配置文件
#mkdir /etc/mysql //为了避免和系统安装的rpm冲突,这里新建一个目录
mysql]# ls support-files/ //可以看到此目录下有很多样例文件
my-small.cnf 64M内存
my-medium.cnf 256M内存
my-large.cnf 512M内存
mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf
#vim /etc/mysql/my.cnf //添加后三行
27 [mysqld]
28 port = 3306
29 socket = /tmp/mysql.sock
30 skip-external-locking
31 key_buffer_size = 256M
32 max_allowed_packet = 1M
33 table_open_cache = 256
34 sort_buffer_size = 1M
35 read_buffer_size = 1M
36 read_rnd_buffer_size = 4M
37 myisam_sort_buffer_size = 64M
38 thread_cache_size = 8
39 query_cache_size= 16M
40 # Try number of CPU's*2 for thread_concurrency
41 thread_concurrency = 8
42 datadir = /mydata/data //数据库路径
43 Innodb_file_per_table = on //
44 skip_name_resolve = on //跳过名称反解,使用mysql客户端链接时,都会把IP地址反解成主机名,并在本地做权限检查。
#service mysqld start
# ln -s /usr/local/mysql/bin/mysql /usr/bin
至此mysqld已经可以成功启动了
#mysql
MariaDB [(none)]> use mysql
MariaDB [mysql]> SELECT User,Host,Password From user;
可以看得出密码全部为空,且有两个匿名用户,所以要给所有的管理员加上密码,清楚所有匿名用户,即安全初始化
8、MySQL安全初始化
# /usr/local/mysql/bin/mysql_secure_installation //直接回车
Enter current password for root (enter for none): //因为现在root没有密码,所以直接回车
Set root password? [Y/n] //是否为管理员设置密码,当然是,y
New password:
Re-enter new password: // 输入两次密码
Remove anonymous users? [Y/n] //是否删除匿名用户,当然要
Disallow root login remotely? [Y/n] //是否禁止管理员远程登陆,这个在实际生产环境中是必须要禁止的,因为数据很重要,管理员权限很大,必须禁止
Remove test database and access to it? [Y/n] //是否移除测试数据库,看个人
Reload privilege tables now? [Y/n] //是否重载授权表,改了管理员密码或者创建用户都需要重载-->Y
#mysql -uroot -p //再次登陆就需要输入密码了
MariaDB [(none)]> use mysql
Database changed
MariaDB [mysql]> SELECT User,Host,Password From user;
可以看得出匿名用户已经被清除,且每个管理员都有密码