背景
- Cenos7默认不支持mysql。
因为在cento7上运行yum install mysql会下载安装的是MariaDB(这是mysql原班人马在mysql公司卖给其他公司几年后,防止mysql被Oracle闭源才新生成的一个Mysql的分支),而不是原来的mysql。 - 运行: yum install mysql 就相当于运行: yum install MariaDB 。但是对于MariaDB的话,直接安装MariaDB是不会运行起来的服务的,因为只安装了MariaDB的客户端,所以还需要下载一系列的MariaDB组件如MariaDB-server。
安装前准备
-
卸载mariadb
a) 列出所有安装的mariadb rpm包:rpm -qa | grep mariadb
b) 将所有列车的mariadb rpm包给卸载掉: rpm -e --nodeps 包名称 -
添加官方yum源
以centos7安装mysql5.7为例子
a) 创建并编辑mysql-community.repo文件 vim /etc/yum.repos.d/mysql-community.repo
b) 将如下内容粘贴进去并保存[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql注意:gpgcheck是GPG加密校验,官方文档中,值为1,但check会报错误,所以这里改为0跳过检查,对安装无影响。
c) 有可能打开已经有很多安装源了,把不想的版本注释掉就可以了。
安装
yum install mysql-community-server
启动
service mysqld start
修改root用户密码过程
-
vim /etc/my.cnf #编辑文件,找到[mysqld],在下面添加一行skip-grant-tables
[mysqld]
skip-grant-tables
:wq! #保存退出
service mysqld restart #重启MySQL服务 -
进入MySQL控制台
mysql -uroot -p #直接按回车,这时不需要输入root密码。 -
mysql 5.7.25
5.7版本mysql user表没有password字段了,无法使用update user实现改密码,可如下操作
mysql> set password for 用户名@host = password(‘新密码’);eg: set password for root@localhost = password(’123456’);
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
这个时候我们只需要flush privileges 一下,在添加用户就OK了,
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)mysql> set password for root@localhost = password(’123456’);
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on * . * to ‘root’@’%’ identified by ‘123456’ with grant option;Query OK, 0 rows affected (0.00 sec)
弄好了,再登录就行。 -
取消/etc/my.cnf中的skip-grant-tables
vi /etc/my.cnf 编辑文件,找到[mysqld],删除skip-grant-tables这一行
:wq! #保存退出 -
重启mysql
service mysqld restart #重启mysql,这个时候mysql的root密码已经修改为123456 -
进入mysql控制台
mysql -uroot -p #进入mysql控制台
123456 #输入密码
基本操作
- 创建数据库
create database dbname; - 创建用户 (用户名@连接ip by 密码)
create user ‘testName’@’%’ identified by ‘66666666666666666’;
3.授权
grant all on dbname.* to ‘testName’@’%’;
小结
- centos6 只有service,没有systemctl
- centos7使用service会重定向到systemctl执行
- Mysql5.7是最稳定的Mysql的数据库版本