yum install https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm -y
最新的yum源rpm包在这里下载:https://dev.mysql.com/downloads/repo/yum/
yum -y install yum-utils
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
yum -y install mysql-community-server
systemctl start mysqld.service
安装完成后会随机生成root密码,首先查看root密码:
grep 'temporary password' /var/log/mysqld.log
使用随机密码登录命令行,修改密码策略,修改密码:
mysql -u root -p
set global validate_password_policy=0;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin12345';
查看密码策略
show variables like 'validate_password%';
密码策略共有以下几种: validate_password_policy:密码安全策略,默认MEDIUM策略
| 策略 | 检查规则 |
|---|---|
| 0 or LOW | Length |
| 1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters |
| 2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file |
validate_password_mixed_case_count:大小写字符长度,至少1个
validate_password_number_count :数字至少1个
validate_password_special_char_count:特殊字符至少1个
validate_password_dictionary_file:密码策略文件,策略为STRONG才需要
validate_password_length:密码最少长度
grant all privileges on *.* to 'root'@'%' identified by 'Admin12345' with grant option;
grant all privileges on *.* to 'root'@'localhost' identified by 'Admin12345' with grant option;
grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'Admin12345' with grant option;
FLUSH PRIVILEGES;
查看可以访问的主机:
use mysql;
select host,user from user where user='root';
查询数据库编码
show variables like 'character%';
show variables like '%collation%';
vim /etc/my.cnf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[database]
character_set_database=utf8mb4
[mysqld]
#设置监听ipv4
bind-address=0.0.0.0
transaction-isolation=READ-COMMITTED
server-id=1
log-bin
log_bin_trust_function_creators=1
port=3306
max_connect_errors=99999
max_error_count=65535
character-set-server=utf8mb4
lower_case_table_names=1
max_connections=9999
max_user_connections=8888
wait_timeout=31536000
interactive_timeout=31536000
innodb_buffer_pool_size=128M
innodb_buffer_pool_instances=1
innodb_buffer_pool_chunk_size=128M
max_allowed_packet=100M
sql-mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES"
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
tar -xvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.35-linux-glibc2.12-x86_64/ /usr/local/mysql
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql:mysql /usr/local/mysql
mkdir -p /usr/local/mysql/data
#导入新的data之后再运行下面这句话
chown -R mysql:mysql /usr/local/mysql/data
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
vim /etc/my.cnf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[database]
character_set_database=utf8mb4
[mysqld]
bind-address=0.0.0.0
transaction-isolation=READ-COMMITTED
server-id=1
log-bin
log_bin_trust_function_creators=1
port=3306
max_connect_errors=99999
max_error_count=65535
character-set-server=utf8mb4
lower_case_table_names=1
max_connections=9999
max_user_connections=8888
wait_timeout=31536000
interactive_timeout=31536000
innodb_buffer_pool_size=128M
innodb_buffer_pool_instances=1
innodb_buffer_pool_chunk_size=128M
max_allowed_packet=100M
sql-mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES"
/etc/init.d/mysql start
mysql -uroot -p
如果出现:-bash: mysql: command not found
就执行: # ln -s /usr/local/mysql/bin/mysql /usr/bin --没有出现就不用执行
输入之前初始化生成的密码,登录成功,至此安装完毕!
cd /etc/init.d/
chmod +x mysql
chkconfig --add mysql
chkconfig --list
chkconfig --level 345 mysql on
wget --no-check-certificate https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
xz -dk mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar
mv mysql-8.0.27-linux-glibc2.12-x86_64 /usr/local/mysql
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql:mysql /usr/local/mysql
mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql/data
cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
vim /etc/my.cnf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[database]
character_set_database=utf8mb4
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
bind-address=0.0.0.0
transaction-isolation=READ-COMMITTED
server-id=1
log-bin
log_bin_trust_function_creators=1
port=20306
max_connect_errors=99999
max_error_count=65535
#MySQL8推荐字符集
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
lower_case_table_names=1
max_connections=9999
max_user_connections=8888
wait_timeout=31536000
interactive_timeout=31536000
innodb_buffer_pool_size=128M
innodb_buffer_pool_instances=1
innodb_buffer_pool_chunk_size=128M
max_allowed_packet=100M
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
/etc/init.d/mysql start
mysql -uroot -p
如果出现:-bash: mysql: command not found就执行:
ln -s /usr/local/mysql/bin/mysql /usr/bin
输入之前初始化生成的密码,登录成功,至此安装完毕!
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'Admin12345';
use mysql;
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;
cd /etc/init.d/
chmod +x mysql
chkconfig --add mysql
chkconfig --list
chkconfig --level 345 mysql on
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
[root@masterdb ~]# rpm -qa|grep mysql
[root@masterdb ~]# rpm -qa |grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@masterdb ~]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
MySQL对libaio 库有依赖性。如果未在本地安装该库,则数据目录初始化和随后的服务器启动步骤将失败 、
# install library
[root@mysql mysql]# yum install libaio
对于MySQL 5.7.19和更高版本:通用Linux版本中增加了对非统一内存访问(NUMA)的支持,该版本现在对libnuma库具有依赖性 。
# install library
[root@mysql mysql]# yum install libnuma
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
[root@masterdb ~]# cd /usr/local/
[root@masterdb local]# tar xzvf /root/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
# 修改解压文件名,与前面定义的basedir相同
[root@masterdb local]# mv mysql-5.7.24-linux-glibc2.12-x86_64/ mysql
mkdir -p /mysql/{3306,3307,3308,3309}/data
mkdir /var/lib/mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /mysql
vim /etc/my.cnf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[database]
character_set_database=utf8mb4
[mysqld]
user=mysql
basedir = /usr/local/mysql
bind-address=0.0.0.0
transaction-isolation=READ-COMMITTED
server-id=1
log-bin
log_bin_trust_function_creators=1
max_connect_errors=99999
max_error_count=65535
character-set-server=utf8mb4
lower_case_table_names=1
max_connections=9999
max_user_connections=8888
wait_timeout=31536000
interactive_timeout=31536000
innodb_buffer_pool_size=128M
innodb_buffer_pool_instances=1
innodb_buffer_pool_chunk_size=128M
max_allowed_packet=100M
sql-mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES"
[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
log=/usr/local/mysql/mysqld_multi.log
[mysqld30306]
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/mysql/30306/data
port=30306
server_id=30306
socket=/mysql/30306/mysql_30306.sock
log-error = /mysql/30306/error_30306.log
[mysqld3307]
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/mysql/3307/data
port=3307
server_id=3307
socket/mysql/3307/mysql_3307.sock
log-error=/mysql/3307/error_3307.log
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql/ --datadir=/mysql/3307/data
export PATH=/usr/local/mysql/bin:$PATH
# 使用mysqld_multi启动3306端口的实例
mysqld_multi start 3306
# 使用mysqld_multi启动全部实例
mysqld_multi start
# 使用mysqld_multi查看实例状态
mysqld_multi report
mysql -S /tmp/mysql_3306.sock -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin12345';
grant all privileges on *.* to 'root'@'%' identified by 'Admin12345' with grant option;
grant all privileges on *.* to 'root'@'localhost' identified by 'Admin12345' with grant option;
grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'Admin12345' with grant option;
FLUSH PRIVILEGES;
mysqladmin -h127.0.0.1 -uroot -p -P3307 shutdown
rpm -qa|grep -i mysql
删除命令:rpm -e –nodeps 包名
rpm -ev MySQL-client-5.5.25a-1.rhel5
rpm -ev MySQL-server-5.5.25a-1.rhel5
如果提示依赖包错误,则使用以下命令尝试:
rpm -ev MySQL-client-5.5.25a-1.rhel5 --nodeps
如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1
则用以下命令尝试:
rpm -e --noscripts MySQL-client-``5.5``.25a-``1``.rhel5
find / -name mysql
rm -rf /var/lib/mysql
rpm -qa|grep -i mysql
vim /etc/my.cnf mysqld下增加参数
skip-grant-tables
重启数据库直接登录mysql
systemctl restart mysqld.service
修改密码
UPDATE mysql.user SET authentication_string=PASSWORD('Admin12345') where USER='root';
FLUSH PRIVILEGES;
最后删除配置 skip-grant-tables 重启数据库服务
备份所有的库
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456789aA! --single-transaction -A >dump.sql
备份指定的库
mysqldump -u root -p123456789aA! wordpress > /home/wordpress.sql
mysqldump -u root -p123456789aA! --databases wordpress > /home/wordpress.sql
#如果数据过大
mysqldump -u root -p -P 20306 wordpress --max_allowed_packet=1G > /home/wordpress.sql
还原:
source /home/wordpress.sql;
或者:
mysql -u root -p wordpress < /home/wordpress.sql
还原时取消严格校验参数
innodb_large_prefix=1
innodb_file_per_table = 1
innodb_file_format = Barracuda
innodb_strict_mode=0