1. yum安装好之后,挪动mysql的安装位置。
从/usr/local/mysql 挪到/home/data/mysql
chown -R mysql:mysql /home/data/mysql
chmod -R 777 /home/data/mysql
之后,依旧报各种文件没有权限。
os_file_get_status() failed on './ibdata1'. Can't determine file permissions
'/home/data/mysql/mysql-bin.index' not found (Errcode: 13 - Permission denied)
最终是 setenforce 0。selinux的问题。
selinux限制进程对文件资源的操作,mysqld.service为Group=mysql user=mysql。
本次操作是将mysql的数据文件目录挪动cp到新的目录。即使修改了新目录的用户组和用户,
但是以mysql:mysql启动的mysql进程依旧没有权限访问操作新目录下的文件。
但是原数据库目录却没任何问题,用户组和用户名都是mysql:mysql。
这应该就是selinux策略限制了用户与指定目录的关系了。暂时还没弄清。
2. mysql_multi与systemd mysql_safe与mysqld 的区别。
rpm包以yum安装的没有mysqld_multi和mysqld_safe。
yum安装自启服务,systemctl / service
3. yum rpm安装包
mysql.com download->yum resposity->mysql57-community-release-el7-11.noarch.rpm
# rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
#yum repolist all | grep mysql //查看mysql版本 enable的表示默认安装的版本(基本是最新版本)
[root@MyCloudServer etc]# yum repolist all | grep mysql
#yum -y install yum-utils
# sudo yum-config-manager --disable mysql80-community //隐藏最新版本
# sudo yum-config-manager --enable mysql57-community //显示指定需要的版本
#yum repolist enabled | grep mysql
#yum install mysql-community-server
#可能遇到的问题
The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
......
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022complete;#表示安装完成
# systemctl start mysqld.service //service mysql start
# grep 'temporary password' /var/log/mysqld.log 查看临时生成的随机密码
# mysql -uroot -p随机密码
# set global validate_password_policy=0;//设置mysql密码的模式,长度没要求
# ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
# GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '新密码';//授权用户 远程登录
# FLUSH PRIVILEGES;
rpm包安装启用多实例:
cp -r /usr/local/mysql /home/data/mysql
cp -r /usr/local/mysql /home/data/mysql3307
chown -R mysql:mysql /home/data/mysql
chown -R mysql:mysql /home/data/mysql3307
service mysqld@3306 start
service mysqld@3307 start
mysql -P 3306 -uroot -S /home/data/mysql/mysql.sock -p
mysql -P 3307 -uroot -S /home/data/mysql3307/mysql.sock -p
4.离线安装,并修改datadir
https://downloads.mysql.com/archives/community/ 5.7.17 Linux-Generic ...
#tar -xzvf /home/smysql/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
#mv /home/mysql/mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql
#mkdir /home/data创建mysql用户、组及目录(这必须有的 否则Mysql初始化不成功)
如果mysql组已存在 先删除组中的用户 再删除组
#userdel -r mysql
#groupdel -r mysql
#groupadd -r mysql
#useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql改变目录属有者
#cd /usr/local/mysql
#pwd
#chown -R mysql .
#chgrp -R mysql .
#chown -R mysql /home/data配置参数(初始化)[并记住记录生成的临时密码]
#cd /usr/local/mysql/bin
#./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/data
#./mysql_ssl_rsa_setup --datadir=/home/data修改系统配置文件
#cd /usr/local/mysql/support-files
#cp my-default.cnf /etc/my.cnf //mysql-5.7.1.17之后不存在这个文件了,可以从网上下下来。。。
#cp mysql.server /etc/init.d/mysql
#vi /etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/home/data启动mysql
#/etc/init.d/mysql start
# ln -s /usr/local/mysql/bin/mysql /usr/bin
#mysql -uroot -pmysql>set password=password('xinsixian123');
mysql>grant all privileges on *.* to 'root'@'%' identified by '123456';
mysql>flush privileges;添加环境变量
# vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
#source /etc/profile配置mysql自动启动
# chmod 755 /etc/init.d/mysql
# chkconfig --add mysql
# chkconfig --level 345 mysql on#service mysql status
#service mysql stop
#service mysql start
使用mysql_multi管理多实例
[mysqld]
user=mysql
basedir=/home/mysql[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/user/local/mysql/bin/mysqladmin
log=/home/mysqld_multi.log[mysqld3306]
mysqld=mysqld
datadir=/home/data
port=3306
server_id=2
socket=/home/data/mysql.sock
log_error=/home/data/error_3306.log#开启binlog
binlog_format=ROW
#lower_case_table_names=1
log_slave_updates=true
#gtid_mode=on
#enforce_gtid_consistency=1
#不同步的表(当前_其他)
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema
#屏蔽同步(其他_>当前)
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema[mysqld3307]
mysqld=mysqld
datadir=/home/data3307
port=3307
server_id=3
socket=/home/data3307/mysql.sock
log_error=/home/data3307/error_3307.log#开启binlog
binlog_format=ROW
#lower_case_table_names=1
log_slave_updates=true
#gtid_mode=on
#enforce_gtid_consistency=1
#不同步的表(当前_其他)
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema
#屏蔽同步(其他_>当前)
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema---------------------------------以上为my.cnf------------------------------------
/home/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql/ --datadir=/home/data/
/home/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql/ --datadir=/home/data3306/#启动单实例 和 全部实例
$ mysqld_multi start 7001
$ mysqld_multi start关闭可以kill 、 mysqladmin shutdown
允许远程登陆:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
update mysql.user set host='%' where user='root';
flush privileges;mysql -uroot -p -S /home/data/mysql.sock
change replication source to source_host="localhost", source_port=3306, source_user='repl', source_password='123456', source_auto_position=1;