安装好mysql后,第一次初始化数据库

前言:启动mysql数据库最好不要使用root用户,而是使用mysql用户启动

官方解释:

(永远不要使用root帐号启动MySQL Server。这样做很危险,

因为拥有FILE'权限的用户会使得MySQL Server使用root帐户创建文件(比如,~root/.bashrc),

为了防止类似的事情发生,mysqld默认拒绝用户使用root帐户启动,

但root用户可以通过在命令后面加上"--user=root"选项来强行启动mysqld。)

使用mysql账户启动数据库

/bin/mysqld --user=mysql

在创建mysql帐户后,可以将下面的内容添加到my.cnf文件中:

[mysqld]

user=mysql

这个选项可以使你使用指定的用户帐户启动MySQL,无论是mysqld_safe还是mysql.server命令,都可以使用

1.旧版本的mysql默认密码为空,

直接登录即可

用密码登陆  mysql -uroot

2.在一些新版本的mysql会创建随机默认密码,

使用mysql_install_db命令初始化数据库,该命令会在安装Mysql的用户根目录下创建一个.mysql_secret文件,
该文件记录了初始化生成的随机密码

位置在/root/.mysql_secret 中(在5.6版本中是放在 ~/.mysql_secret 文件里)

安装结束时会有文字提示。

3. 对于Mysql 5.7.6以后的5.7系列版本

Mysql使用mysqld --initialize

mysqld --initialize-insecure命令来初始化数据库,

mysqld --initialize-insecure可以不生成随机密码,设置数据库空密码。

安装Mysql时默认使用的是mysqld --initialize命令:

这个命令也会生成一个随机密码。改密码保存在了Mysql的日志文件中。

mysql 的日志文件位置:

mysql的配置文件是/etc/my.cnf,打开该文件,可以看到mysql的datadir和log文件等的配置信息,如下:

datadir=/var/lib/mysql

log-error=/var/log/mysqld.log

打开log文件并搜索:

#less /var/log/mysqld.log2017-02-27T05:53:46.368129Z 1 [Note] A temporary password is generated for root@localhost: V2:Y!Nh5Gi/6

4.这里推荐使用

MySQL安全配置向导mysql_secure_installation

安装完mysql-server 会提示可以运行mysql_secure_installation。运行mysql_secure_installation会执行几个设置:

a)为root用户设置密码

b)删除匿名账号

c)取消root用户远程登录

d)删除test库和对test库的访问权限

e)刷新授权表使修改生效

通过这几项的设置能够提高mysql库的安全。建议生产环境中mysql安装这完成后一定要运行一次mysql_secure_installation

5.

在Centos 7系统上使用rpm命令安装Mysql后,mysql的配置文件是/etc/my.cnf,打开该文件,可以看到mysql的datadir和log文件等的配置信息,如下:

datadir=/var/lib/mysql

log-error=/var/log/mysqld.log

打开/var/log/mysqld.log文件,搜索字符串A temporary password is generated for root@localhost:,可以找到这个随机密码,通常这一行日志在log文件的最初几行,比较容易看到。

使用找到的随机密码登录mysql,首次登录后,mysql要比必须修改默认密码,否则不能执行任何其他数据库操作,这样体现了不断增强的Mysql安全性。

第一次登陆后必须更改密码mysql> show databases;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.mysql> set password = password('xxxxxx');

2.运行设置程序

/usr/bin/mysql_secure_installation

修改密码:

方法1: 用SET PASSWORD命令

格式:mysql> set password for 用户名@localhost = password('新密码');

例子:mysql> set password for root@localhost = password('123');

方法2:用mysqladmin

格式:mysqladmin -u用户名 -p旧密码 password 新密码

例子:mysqladmin -uroot -p123456 password 123

方法3:用UPDATE直接编辑user表

mysql> use mysql;

mysql> update user set password=password('123') where user='root' and host='localhost';

mysql> flush privileges;

注意:更改密码: update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';

*特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了

而是将加密后的用户密码存储于authentication_string字段

mysql> flush privileges;

mysql> quit;

方法4:在忘记root密码的时候,可以这样

以windows为例:

1. 关闭正在运行的MySQL服务。

2. 打开DOS窗口,转到mysql\bin目录。

3. 输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。

4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。

5. 输入mysql回车,如果成功,将出现MySQL提示符 >。

6. 连接权限数据库: use mysql; 。

6. 改密码:update user set password=password("123") where user="root";(别忘了最后加分号) 。

7. 刷新权限(必须步骤):flush privileges; 。

8. 退出 quit。

9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。

Linux:修改 mysql服务的配置文件

[root@sample ~]# vi /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

skip-grant-tables                     #添加这句话,这时候登入mysql就不需要密码

symbolic-links=0

重启服务

[root@sample ~]# /etc/init.d/mysqld start     或者 service mysqld start

登入mysql并设置新密码

[root@sample ~]# mysql

mysql> USE mysql ;

mysql> UPDATE user SET Password = password(‘new-password‘) WHERE User = 'root';

mysql> flush privileges ;

mysql> quit

恢复配置文件原样。

在把 /etc/my.cnf 中 skip-grant-tables 注释了,

重启mysql服务

[root@sample ~]# /etc/init.d/mysqld restart

设置密码为简单密码:

如果修改为一个简单的密码,会报以下错误:

mysql>  ALTER USER USER() IDENTIFIED BY '12345678';ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这个其实与validate_password_policy的值有关。

查看validate_password_policy的值:

mysql> select @@validate_password_policy;+----------------------------+| @@validate_password_policy |+----------------------------+| LOW                        |+----------------------------+1 row in set (0.00 sec)

validate_password_policy有以下取值:

Policy Tests Performed

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

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。

必须修改两个全局参数:

首先,修改validate_password_policy参数的值

mysql> set global validate_password_policy=0;       Query OK, 0 rows affected (0.00 sec)

这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定。

我们来看一下这个参数的长度:

mysql> select @@validate_password_length;+----------------------------+| @@validate_password_length |+----------------------------+|                          8 |+----------------------------+1 row in set (0.02 sec)

我们可以修改这个参数长度:

mysql> set global validate_password_length=6;Query OK, 0 rows affected (0.02 sec)

validate_password_length参数默认为8,它有最小值的限制,最小值为4:

validate_password_number_count+ validate_password_special_char_count+ (2 * validate_password_mixed_case_count)

其中,validate_password_number_count指定了密码中数据的长度,validate_password_special_char_count指定了密码中特殊字符的长度,validate_password_mixed_case_count指定了密码中大小字母的长度。

这些参数,默认值均为1,所以validate_password_length最小值为4,如果你显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4。如下所示:

如果修改了validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一个值,则validate_password_length将进行动态修改。

前提是validate_password插件必须已经安装,MySQL5.7是默认安装的。

那么如何验证validate_password插件是否安装呢?可通过查看以下参数,如果没有安装,则输出将为空。

mysql> SHOW VARIABLES LIKE 'validate_password%';

Mysql 初始化 及 密码管理的更多相关文章

  1. MySQL初始化root密码以及root密码忘记解决方法

    一.MySQL初始化root密码 mysql默认root用户没有密码,输入mysql –u root 进入mysql 1.进入mysql数据库 use mysql; 2.初始化root密码 mysql ...

  2. Navicat Premium连接MySQL 1251错误和Mysql初始化root密码和允许远程访问

    Mysql初始化root密码和允许远程访问 在我们使用mysql数据库时,有时我们的程序与数据库不在同一机器上,这时我们需要远程访问数据库.缺省状态下,mysql的用户是没有远程访问的权限. 下面介绍 ...

  3. Mysql初始化root密码和允许远程访问

    mysql默认root用户没有密码,输入mysql –u root 进入mysql 1.初始化root密码 进入mysql数据库 1 mysql>update user set password ...

  4. mysql 初始化修改密码问题(Mac系统)

    今天公司大牛帮我搞定了mysql初始化密码问题,纪录一下: ~ ps aux | grep mysqlMetro 7149 0.0 0.0 2432772 564 s000 R+ 7:16下午 0:0 ...

  5. mysql学习之-密码管理(默认密码,修改密码,解决忘记密码)

    1. mysql安装后默认没有密码,初始化安装后默认密码登录,需要马上修改root密码.[root@mysql ~]# cat /root/.mysql_secret    --查看root账号密码# ...

  6. MySQL 8.* 账号密码管理

    修改密码: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码' 通过以下命令可以查看修改的账号 ...

  7. mysql数据库用户密码管理

    创建用户:create user 'oracle'@'localhost' identified by 'password'; MySQL 8以上:alter user 'root'@'localho ...

  8. MySQL for OPS 01:简介 / 安装初始化 / 用户授权管理

    写在前面的话 取这个标题的目的很简单,MySQL 在中小型企业中一般都是由运维来维护的,除非数据很重要的公司可能会聘请 DBA. 但是运维一般存在由于所需要了解的东西很多很杂,导致学习过程中很多东西只 ...

  9. 【shell 每日一练6】初始化安装Mysql并修改密码

    一.简单实现mysql一键安装 参考:[第二章]MySQL数据库基于Centos7.3-部署 此脚本前提条件是防火墙,selinux都已经设置完毕: [root@web130 ~]# cat Inst ...

随机推荐

  1. 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第六节:第一境尾声

    在第一境中,我们主要了解了爬虫的一些基本原理,说原理也行,说基础知识也罢,结果就是已经知道一个小爬虫是如何诞生的了~那么现在,请默默回想一下,在第一境中,您都掌握了哪些内容?哪些还比较模糊?如果还有什 ...

  2. Replacing the deprecated Java JPEG classes for Java 7

    [src: https://blog.idrsolutions.com/2012/05/replacing-the-deprecated-java-jpeg-classes-for-java-7/] ...

  3. electron教程(番外篇二): 使用TypeScript版本的electron, VSCode调试TypeScript, TS版本的ESLint

    我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(番外篇一): 开发环境及插件, VSCode调试, ESLint + Google ...

  4. 关于爬虫的日常复习(17)——scrapy系列1

  5. 机器学习-决策树 Decision Tree

    咱们正式进入了机器学习的模型的部分,虽然现在最火的的机器学习方面的库是Tensorflow, 但是这里还是先简单介绍一下另一个数据处理方面很火的库叫做sklearn.其实咱们在前面已经介绍了一点点sk ...

  6. 为什么你应该使用 Kubernetes(k8s)

    Kubernetes (Kube 或 K8s)越来越流行,他是市场上最好的容器编排工具之一. 1. 什么是容器? 容器就是一个包,其中包含了应用及其所有依赖. 容器中的应用与主机系统是隔离的,不关注环 ...

  7. tomcat性能优化梳理

    tomcat性能优化 Tomcat本身优化 Tomcat内存优化 启动时告诉JVM我要一块大内存(调优内存是最直接的方式) 我们可以在 tomcat 的启动脚本 catalina.sh 中设置 jav ...

  8. canvas跨域完美解决,微信头像解决跨域

    现在前端技术发展的越来越快,很多图片合成这种耗费服务器性能的,都可以移动到前端进行了合成了.而且合成很方便,我们利用 canvas 可以实现好多东西. 自动打算利用前端来合成图片,在网上就找到了 ht ...

  9. ElasticSearch系列专栏

    最近我们公司因业务发展较快,不少服务遇到了一些瓶颈,影响最大的就是数据量的暴增带来的搜索效率的问题.虽然建立索引以及利用好缓存可以有效地缓解该问题,但是随着业务的发展,业务的复杂度也逐渐提升,原有的技 ...

  10. CUDA学习(三)之使用GPU进行两个数相加

    在CPU上定义两个数并赋值,然后使用GPU核函数将两个数相加并返回到CPU,在CPU上显示 #include "cuda_runtime.h" #include "dev ...