mysql8.0 快速安装部署 初始化 建库建表 忘记密码

                mysql 8.0安装及部署
1. hosts文件
echo "oracle12c1 192.168.0.100" >> /etc/hosts

2.卸载 系统自带mysql,mariadb
rpm -qa | grep mysql
rpm -qa | grep mariadb
rpm -e --nodeps mysql*
rpm -e --nodeps mariadb* 

3.安装
mkdir -p /usr/local/mysql      解压的文件放在 usr/local  并重命名为mysql
mkdir /var/lib/mysql            socket目录
mkdir -p /usr/local/mysql/log
mkdir -p /usr/local/mysql/data

4.配置环境变量
vim ~/.bash_profile

PATH=$PATH:/usr/local/mysql/mysql/bin

5.
[root@oracle12c1 mysql]# groupadd mysql
[root@oracle12c1 mysql]# useradd -r -g mysql -s /sbin/nologin mysql                 (-r -s 的目的 不让其作为登录用户)
[root@oracle12c1 mysql]# chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /var/lib/mysql


6.mysql配置文件    vim /etc/my.cnf                            和之前版本不一样的地方-1-:字符集只能是utf8mb4,最后一行
[mysql]
default-character-set=utf8mb4               #8.0都是用utf8mb4
#socket=/var/lib/mysql/mysql.sock
[mysqld]
port=3306
#socker=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql/mysql
datadir=/usr/local/mysql/data
character-set-server=utf8mb4

default-storage-engine=INNODB
innodb_buffer_pool_size=200M
max_allowed_packet=16M
explicit_defaults_for_timestamp=1
log-output=FILE
general_log=0
general_log_file=/usr/local/mysql/log/general.err
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/log/query.err
long_query_time=10
log-error=/usr/local/mysql/log/error.err
default-authentication-plugin=mysql_native_password                                mysql5.7.6版本后 废弃user表中 password字段 和 password()方法,所以旧方法重置密码对mysql8.0版本是行不通的           ,这条是恢复默认密码策略


[root@oracle12c1 mysql]# /usr/local/mysql/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql --datadir=/usr/local/mysql/data
有临时密码


7.安装后的设置和启动

vim /usr/lib/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/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65536
LImitNPROC=65536

systemctl daemon-reload
systemctl stop mysqld
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld

命令行启动和关闭:
nohup /usr/local/mysql/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
mysqladmin -uroot -p shutdown 

8.进入数据库
[root@oracle12c1 bin]# mysql -u root -p
### 改密码            不一样-2- root用户和远程登陆的用户  with mysql_native_password
mysql> alter user 'root'@'localhost' IDENTIFIED with mysql_native_password by 'root';        这里的localhost是本地ip的表示方式
mysql> use mysql
mysql> select host,user from user where user='root'; 

####开启远程登录,用在win上连接 , 这两个用户是不一样的
mysql> create USER 'root'@'%' IDENTIFIED with mysql_native_password by 'root';    %是所有的ip
mysql> grant all privileges on *.* to 'root'@'%' with grant option;  修改所有权限,到所有的数据库的所有的表 到root 并设置管理员
####测试 可不可以远程登陆
mysql> select host,user from user where user='root';
[root@oracle12c1 bin]# mysql -u root -p -horacle12c1          -h远程登录 hostname 或者 IP地址
mysql> show databases;

[root@oracle12c1 bin]# systemctl stop firewalld
[root@oracle12c1 bin]# systemctl disable firewalld

9.创建数据库,建表    -3-  普通用户 没变化
[root@oracle12c1 bin]# mysql -uroot -p
mysql> create database testdb default charset utf8mb4;      
mysql> create user 'test'@'%' identified by 'test';
mysql> select host,user from mysql.user;

授权           和之前版本不一样-4-   授权的命令不再区分
mysql> grant all privileges on testdb.* to 'test'@'%' with grant option;        


mysql> use testdb

mysql> create table test01(
     id int auto_increment primary key,
     name varchar(15)
     )engine=InnoDB;

 insert into test01 values (1,'zhang');
 insert into test01 values (2,'liu');


mysql> select * from test01;
+----+-------+
| id | name  |
+----+-------+
|  1 | zhang |
|  2 | liu   |
+----+-------+
2 rows in set (0.00 sec)

mysql> commit;

                            忘记登录密码

1://免密码登陆

找到mysql配置文件:my.cnf,

在【mysqld】模块添加:skip-grant-tables   保存退出;

2://使配置生效

重启mysql服务:  service mysqld restart;

3://将旧密码置空

mysql -u root -p    //提示输入密码时直接敲回车。

//选择数据库

use mysql

//将密码置空

update user set authentication_string = '' where user = 'root';

//退出

quit

4://去除免密码登陆

删掉步骤1的语句  skip-grant-tables

重启服务  service mysqld restart

5://修改密码

mysql -u root -p  //提示输入密码时直接敲回车,刚刚已经将密码置空了

ALTER USER 'root'@'localhost' IDENTIFIED BY 'abc123@xxx';

alter USER 'root'@'%' IDENTIFIED with mysql_native_password by 'root';

你可能感兴趣的:(mysql8.0 快速安装部署 初始化 建库建表 忘记密码)